【发布时间】:2013-04-23 19:49:38
【问题描述】:
我在与加速度计传感器的通信方面遇到了一点问题。传感器连续输出约 8000 个读数/秒。传感器通过适配器插入 USB 端口并显示为 com4。我的问题是我似乎无法从字节流中挑选出传感器读取数据包。数据包大小为五个字节,格式如下:
High nibble Low nibble
Byte 1 checksum, id for packet start X high
Byte 2 X mid X low
Byte 3 Y high Y mid
Byte 4 Y low Z high
Byte 5 Y mid Y low
X,y,z 是加速度。
在传感器的文档中,它指出第一个字节中的高半字节是校验和(计算 Xhigh+Xlow+Yhigh+Ylow+Zhigh+Zlow),也是数据包开始的标识。我对针对外部设备进行编程非常陌生,并且无法真正掌握如何将校验和用作包开始的标识符(校验和不会一直变化吗?)。这是识别数据包开始的常用方法吗?有谁知道如何解决这个问题?
任何帮助将不胜感激。
【问题讨论】:
-
这些是什么数据包? UDP? TCP?还是哪一个?
-
@J.Davidson 是否必须是其中之一。可以是从外部设备读取的字节块吗?
-
5 字节/数据包,每秒 8000 = 40Kb/秒,您需要 400000 的波特率,而不是标准问题 COM 设置
-
每秒 8192 个样本,buad rate 设置为 921600bps(根据手册)。我不确定 UDP、TCP,我正在通过 C# .net 中的 com 端口类阅读。
-
你观察到
low nibble in the first byte了吗?可以是id吗?
标签: serial-port checksum packet serial-communication