我通过串行方式在两台计算机之间发送一些二进制数据。我这样做:
接收
cat < /dev/ttyO5 >> $file
发送
cat < $file > /dev/ttyO5
当我检查文件时,有时接收方机器会在末尾复制文件开头的一些字节。像这样的事情:
ce16 8fa7 bf54 dc6b 238a #Original file
ce16 8fa7 bf54 dc6b 238a ce16 8fa7 #Generated file on receive machine
最后添加的字节数不固定,有时是3个字节,有时是4个......而且我不知道为什么,我在发送和接收之前刷新内存......
有什么线索吗?
编辑:已解决;需要在端口配置中禁用选项 -echo。
最佳答案
根据经验,您不应通过配置未知的串行端口复制二进制数据。将数据编码到文本文件(uuencode、base64、引用的可打印文件、实现您自己的文件)或确保将串行端口配置为传输 8 位原始数据。寻找this example看看它是如何用 C 代码实现的。要从 shell 脚本或 CLI 操作串行端口配置,您可以使用 stty命令。重要的是:设置 8 个数据位,禁用软件控制流并选择要传输的原始数据。确保两侧设置相同的配置。
关于bash - 串行数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408932/