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操作数countiflag,(计算接收到的字节并读取1byte/block) $PLBYTE 预期字节数。

脚本现在按预期运行。

确保在非规范模式下设置 stty (-icanon),否则超过 4096 字节的数据将被截断并且 dd 将不会收到预期的字节数。