Является ли использование dd для чтения из /dev/ttyUSB0 лучшим вариантом?
У меня возникли проблемы с использованием 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 ответ
Обратите внимание, что count
параметр для 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
после каждой попытки read
,