我在使用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
谢谢。
答案 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
。