2016-12-17 12 views
1

У меня есть приложение, использующее последовательный порт для отправки данных от 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 миллисекунд (50 Гц), на Arduino это код:arduino и малиновый pi последовательный порт медленный

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, я подключить XBee с XU4 использованием Tx Rx булавки , порт: '/ dev/ttySAC0'.

Когда я запускаю программы, Arduino получает только первые два или три кадра данных, тогда он перестает работать, пока не нажмет кнопку сброса. может кто-нибудь помочь мне с этой проблемой, мне нужно много времени искать решение, но никаких хороших результатов. также я попытался заменить Arduino малиной Pi B +, но такой же проблемой.

ответ

1

Не является Arduino spcialist, но я хотел бы предложить изменения

if (Serial.available() == 10) { 

в

if (Serial.available() >= 10) { 

текущий код полагается там быть точно одно сообщение доступно. Если коду Python удается отправить два сообщения за время между последующими чтениями, текущий код не будет выполнен.

 Смежные вопросы

  • Нет связанных вопросов^_^