Bash 从串口设备读取N字节二进制数据并保存到文件的脚本
Bash script to read N bytes of binary data from serial device and save them to file
我正在尝试编写一个 Bash 脚本来从连接到我的嵌入式设备的串行设备接收一个已知字节数(我们说的是 1MB)的二进制数据文件。然后必须将这些字节保存到文件中以供以后操作。
我试过 (stty raw; cat > blob.bin) < /dev/ttyS0
之类的方法,但我希望 cat
在达到我期望的字节数时停止,因为脚本需要在其他功能上继续执行文件完成了。
数据流将从外部设备开始,并会运行一直持续到外部设备的二进制文件结束。
正在开发 Linux Buster,不幸的是我无法使用 Python 或其他编程语言。
谢谢!
感谢@meuh 的评论,我能够使用 dd
:
编写一个工作脚本
dd ibs=1 count=$PLBYTE iflag=count_bytes if=/dev/ttyS0 of=/.../dump.bin
使用dd
操作数count和iflag,(计算接收到的字节并读取1byte/block) $PLBYTE
预期字节数。
脚本现在按预期运行。
确保在非规范模式下设置 stty (-icanon),否则超过 4096 字节的数据将被截断并且 dd
将不会收到预期的字节数。
我正在尝试编写一个 Bash 脚本来从连接到我的嵌入式设备的串行设备接收一个已知字节数(我们说的是 1MB)的二进制数据文件。然后必须将这些字节保存到文件中以供以后操作。
我试过 (stty raw; cat > blob.bin) < /dev/ttyS0
之类的方法,但我希望 cat
在达到我期望的字节数时停止,因为脚本需要在其他功能上继续执行文件完成了。
数据流将从外部设备开始,并会运行一直持续到外部设备的二进制文件结束。
正在开发 Linux Buster,不幸的是我无法使用 Python 或其他编程语言。
谢谢!
感谢@meuh 的评论,我能够使用 dd
:
dd ibs=1 count=$PLBYTE iflag=count_bytes if=/dev/ttyS0 of=/.../dump.bin
使用dd
操作数count和iflag,(计算接收到的字节并读取1byte/block) $PLBYTE
预期字节数。
脚本现在按预期运行。
确保在非规范模式下设置 stty (-icanon),否则超过 4096 字节的数据将被截断并且 dd
将不会收到预期的字节数。