【问题标题】:Carriage return (0X0D) between data sent over Xbee S1 modules通过 Xbee S1 模块发送的数据之间的回车 (0X0D)
【发布时间】:2015-01-24 05:50:47
【问题描述】:

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

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

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

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

45 00 00 63 00 00 40 00 40 11 6E DC0D

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 在透明模式下工作。

【问题讨论】:

  • 贴出你用来发送的代码,它可能会揭示问题的原因。
  • 谢谢汤姆,很抱歉这次延误,但我正忙着回复。答案如下。

标签: linux network-programming udp xbee


【解决方案1】:

问题出在 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 2017-01-04
    • 2011-05-30
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多