bash - 串行数据重复

标签 bash serial-port embedded-linux

我通过串行方式在两台计算机之间发送一些二进制数据。我这样做:

接收

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/

相关文章:

bash - 检查命令是否将某些内容打印到标准输出的条件

javascript - execFile Node.js - 找不到 Shell 脚本

linux - 在 morty : backtrace-supported. h 中构建 libgfortran_6.2.bb 配方时出错:没有这样的文件或目录

Linux I2C 文件句柄 - 缓存安全吗?

linux -/proc/iomem 的内容

linux - Bash:格式化 printf 中的字符串

bash - 对列中的字符进行计数和索引

python - 在Python程序中重新检测Arduino板

linux - 如何禁用/阻止用户在嵌入式 linux 中的串行终端上输入命令

python - 如何跟踪与gpsd python库连接的GPS设备的ConnectionRefusedError原因