0

我在使用dd获取来自 的内容时遇到了一些问题/dev/ttyUSB0。这个想法是每 5 分钟轮询一次设备(用于测试)。稍后我可能会使用 cron 作业,但现在,我每分钟检查一次,每 5 次轮询一次。

我的问题发生在dd生产线上。有时,它会卡在那里。我尝试使用read -r line,但这是同一件事。我的猜测是没有什么可读的。-如果没有任何东西来自,我该如何预防dd或停止?- 或者/并且是否有更好的选择来返回的内容?read/dev/ttyUSB0/dev/ttyUSB0

这是我的代码,简化:

while [ 1 ]; do
  curdate=`date "+%M"`
  if [[ "$curdate %5" -eq 0 ]]; then

    echo Letspoll
    echo Polldata > /dev/ttyUSB0

    line=`dd if=/dev/ttyUSB0 count=1 2>/dev/null`
    #read -r line < /dev/ttyUSB0

    if [ !"$line" ]; then
      echo $line
    else
      echo Nothing
    fi

  fi

  echo Sleepingfor60sec
  sleep 60
done

谢谢你。

4

1 回答 1

1

请注意,count参数 todd指定要读取的字节数,而不是行数。我假设您想要一条线,在这种情况下dd使用错误的工具。

# Exit with status 1 if nothing read in 5 seconds
if read -r -t 5 line < /dev/ttyUSB0; then
     echo "$line"
else
     echo Nothing
fi

此外,没有理由date在轮询事件之间使用睡眠;就sleep 300在每次尝试之后read

于 2014-06-10T19:46:56.217 回答