使用dd从/ dev / ttyUSB0读取最佳选项?

时间:2014-06-10 18:51:31

标签: bash dd

我在使用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

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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