我用逻辑分析仪读取了控制器的 TX。我知道它工作在 1200 波特,我已经根据这张照片识别了帧:
我在框架中确定:
- 1 字节 - 始终为 54
- 2 字节 - 连续,每帧 ++
- 3 字节 - 始终为 0
- 4、5 和 6 字节 - 数据
- 7 字节 - 始终为 0
- 8、9、10 和 11- 数据
- 12、13、14 和 15 - 它们各不相同(我知道 15 是校验和)
我无法识别校验和(我怀疑 Checksum8 Xor,因为它与另一个控制器相似)。
我尝试使用 Arduino 将每个字节带到一个数组的位置,知道第一个字节是恒定的 (54) 并且帧总是相同的长度。
是不是因为 Arduino 循环比串行更快,它会复制每个阵列所有位置的数据?
寻找我读过的信息,当我制作 Serial.print 时它可以正常工作(每个字节不重复,但是当我用 while (Serial.available ()) 写一个数组时它会失败。
我留下了一些通过 arduino 获得的帧:
#include <Arduino.h>
void setup() {
Serial.begin(9600);
Serial1.begin(1200);
}
void loop() {
if (Serial1.available()) {
int test= Serial1.read();
Serial.println(test);
}
}
54 154 0 84 84 84 0 84 84 84 84 201 133 84 224
54 155 0 89 89 89 0 89 89 89 89 206 138 89 233
54 156 0 2 2 2 0 2 2 2 2 119 51 2 238
54 157 0 7 7 7 0 7 7 7 7 124 56 7 239
54 158 0 0 0 0 0 0 0 0 0 117 49 0 236
54 159 0 5 5 5 0 5 5 5 5 122 54 5 229
欢迎任何帮助 非常感谢