2016-12-17 71 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毫秒發送兩個包(50Hz ),在Arduino的是這樣的代碼:arduino和樹莓pi串口緩慢

ARDUINO CODE:

#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發送數據,i中的XBee與XU4使用的Tx的Rx引腳連接,端口:'/ dev/ttySAC0'。

當我運行程序時,Arduino只收到前兩個或三個數據幀,然後停止工作,直到我按下重置按鈕。 任何人都可以幫助我解決這個問題,但我花了很多時間尋找解決方案,但沒有取得好的結果。 我也嘗試用覆盆子Pi B +代替Arduino,但同樣的問題。

回答

1

不是一個Arduino spcialist,但我會建議改變

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

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

當前的代碼依賴於有被恰好一個消息可用。如果Python代碼設法在後續讀取之間發送兩條消息,則當前代碼將失敗。