【问题标题】:Bash script to read N bytes of binary data from serial device and save them to file用于从串行设备读取 N 字节二进制数据并将其保存到文件的 Bash 脚本
【发布时间】:2021-03-23 17:54:54
【问题描述】:

我正在尝试编写一个 Bash 脚本,以从连接到我的嵌入式设备的串行设备接收已知字节数(我们谈论的是 1MB)的二进制数据文件。然后必须将这些字节保存到文件中以供以后操作。

我尝试过类似(stty raw; cat > blob.bin) < /dev/ttyS0 的方法,但我希望cat 在达到我期望的字节数时停止,因为文件完成后脚本需要在其他功能上继续。

数据流将从外部设备开始并持续运行直到外部设备的二进制文件结束。

Linux Buster 上工作,很遗憾我不能使用 Python 或其他编程语言。

谢谢!

【问题讨论】:

  • 查看dd命令并设置块大小和计数。

标签: bash binary serial-port embedded-linux cat


【解决方案1】:

感谢@meuh 的评论,我能够使用dd 编写一个工作脚本:

dd ibs=1 count=$PLBYTE iflag=count_bytes if=/dev/ttyS0 of=/.../dump.bin

使用dd 操作数countiflag,(计算接收的字节数并读取1 个字节/块)和$PLBYTE 预期的字节数。

脚本现在按预期工作。

确保将 stty 设置为非规范模式 (-icanon),否则超过 4096 字节的数据将被截断,dd 将无法收到预期的字节数。

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2013-08-22
    • 1970-01-01
    • 2018-09-11
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多