linux - 通过 Xbee S1 模块发送的数据之间的回车 (0X0D)

标签 linux network-programming udp xbee

我正在尝试发送以下十六进制数据 block :

45,  0,  0, 63,  0,  0, 40,  0, 40, 11, 6E, DC,  A,  0,  0,  1, C0, A8,  1,  5, 9D, B3, 22, B8,  0, 4F, 2E, 47, 61, 62, 63, 64, 65, 66, 67, 68, 69, 6A, 6B, 6C, 6D, 6E, 6F, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 7A, 61, 62, 63, 64, 65, 66, 67, 68, 69, 6A, 6B, 6C, 6D, 6E, 6F, 70, 71, 72, 73, 74, 61, 62, 63, 64, 65, 66, 67, 68, 69, 6A, 6B, 6C, 6D, 6E, 6F, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79

这最初是一个 UDP 数据包通过 Xbee S1 模块到另一个 Xbee S1 模块

当我使用 X-CTU 读取接收到的数据 block 时,接收到的数据是:

45 00 00 63 00 00 40 00 40 11 6E DC 0D

0A 00 00 01 C0 A8 01 05 9D B3 22 B8 00 4F 2E 47 61 62 63 64 65 66 67 68 6A 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 61 62 63 64 65 66 67 68 69 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79  

请注意与发送数据无关的粗体字节(0D)?

有人能猜出原因吗?是配置吗?

工作在透明模式下的Xbees。

最佳答案

问题出在 termios.c_oflag 结构的“ONLCR 和 OCRNL”标志中,它将任何换行符“0A hex”转换为回车符“0D hex”,因此,如果发送“0A hex”串行端口,如果上述标志值为 1,端口将发送 0D 0A。

解决方案是将这些标志值设置为零。

struct termios options;
options.c_oflag &= ~(ONLCR | OCRNL);

有关更多信息,请参阅 termios 联机帮助页: [ http://man7.org/linux/man-pages/man3/termios.3.html][1]

关于linux - 通过 Xbee S1 模块发送的数据之间的回车 (0X0D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28122734/

相关文章:

java - 远程客户端收不到 UDP 数据包

c - C语言的udp聊天服务器

c# - 是否可以在 Windows Phone 7 上实现 ping?

c++ - 在 C++ 中解析 Protocol Buffer

udp - 如何使用 mosh 连接到 NAT 后面的服务器

python - 使用 Python 执行外部命令和交换变量

php - - mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb

linux - 我应该使用 init 和 systemd 中的什么来为我的服务创建守护进程?

使用 Linux 恢复 Windows 跨磁盘 (LDM)?

c# - 使用 TPL ping 网络中的所有计算机