在控制台中查看串行设备输出(十六进制)

bla*_*ekp 5 linux zsh serial-port hexadecimal hexdump

我可以通过执行以下两个命令将串行设备输出转换为十六进制格式:

cat /dev/ttyUSB0 > data.dump #send some data to serial device, and interrupt cat using Ctrl+C after some time
xxd data.dump
Run Code Online (Sandbox Code Playgroud)

它给我的输出如下:

00000000: 80ff ffff ffff ffff ffff ffff ffff       ..............
Run Code Online (Sandbox Code Playgroud)

但我想用一个命令来执行此操作,以查看实时数据流,但这些命令都不适合我:

cat /dev/ttyUSB0 | xxd
xxd /dev/ttyUSB0
hexdump /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

这些命令根本没有给我任何输出,这里有什么问题?我正在使用zshshell,并在 fedora 操作系统上工作。

Jim*_*ell 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
Run Code Online (Sandbox Code Playgroud)