Просмотр вывода последовательного устройства в консоли в шестнадцатеричном виде

Я могу преобразовать вывод моего последовательного устройства в шестнадцатеричный формат, выполнив следующие две команды:

cat /dev/ttyUSB0 > data.dump #send some data to serial device, and interrupt cat using Ctrl+C after some time
xxd data.dump

Это дает мне вывод, как:

00000000: 80ff ffff ffff ffff ffff ffff ffff       ..............

Но я хочу сделать это одной командой, чтобы увидеть живой поток данных, но ни одна из этих команд не работает для меня:

cat /dev/ttyUSB0 | xxd
xxd /dev/ttyUSB0
hexdump /dev/ttyUSB0

Эти команды вообще не выводят, в чем здесь проблема? я использую zsh оболочка, и работает на Fedora OS.

1 ответ

Чтение из /dev/ttyUSB0, к сожалению, не так просто. Это решение на сайте Unix & Linux SE мне подошло лучше всего.

      stty -F /dev/ttyUSB0 115200 raw -echo   #CONFIGURE SERIAL PORT
exec 3</dev/ttyUSB0                     #REDIRECT SERIAL OUTPUT TO FD 3
  cat <&3 > /tmp/ttyDump.dat &          #REDIRECT SERIAL OUTPUT TO FILE
  PID=$!                                #SAVE PID TO KILL CAT
    echo "R" > /dev/ttyUSB0             #SEND COMMAND STRING TO SERIAL PORT
    sleep 0.2s                          #WAIT FOR RESPONSE
  kill $PID                             #KILL CAT PROCESS
  wait $PID 2>/dev/null                 #SUPRESS "Terminated" output

exec 3<&-                               #FREE FD 3
cat /tmp/ttyDump.dat                    #DUMP CAPTURED DATA
Другие вопросы по тегам