我有应用程序使用串口将数据从odroid xu4发送到Arduino pro mini,数据是我使用的10个字节的包" Serial_Port.write(struct.pack('cBBBBBBBBB', "R", cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7], cmd[8]))
"并且odroid每20毫秒(50Hz)发送两个包,在arduino上这是代码:
ARDUINO代码:
#include <Wire.h>
char CMD[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char hand;
void setup() {
Serial.begin(115200);
Serial.setTimeout(10);
Serial.println("Arduinno serial to I2C converter 115200");
}
void loop() {
if (Serial.available() == 10) {
Serial.readBytes(CMD, 10);
Serial.println(CMD);
}
}
我使用两个XBee PRO S2C将数据从XU4传输到Arduino,我使用Tx Rx引脚连接XBee和XU4,端口:&#39; / dev / ttySAC0&#39;。
当我运行程序时,Arduino只接收前两三帧数据,然后它停止工作,直到按下重置按钮。 任何人都可以帮我解决这个问题,我花了很多时间寻找解决方案但没有好结果。 我也尝试用覆盆子Pi B +替换Arduino但同样的问题。
答案 0 :(得分:1)
不是arduino spcialist,但我建议改变
if (Serial.available() == 10) {
到
if (Serial.available() >= 10) {
当前代码依赖于完全一条消息可用。如果Python代码设法在后续读取之间的时间内发送两条消息,则当前代码将失败。