2016-04-26 122 views
0

我是在包括髮送從阿爾杜伊諾到蟒4個字符的項目的工作,使得在python第一可變讀取第一發送字符和第二可變讀取第二字符,但是當發送的數據我在屏幕上打印它們不穩定並且不同步。 即: 我發送 'A', 'B', 'C', 'd',以及i期望接收在python相同的: 'A', 'B', 'C', 'd'。 但我收到的可能是這樣的:'c','d','a','b'或'b','c','d','a'。蟒不讀取從Arduino的正確

的Arduino
`

void setup() 
{ 

Serial.begin(9600); 


} 

void loop() 
{ 


Serial.write('a'); 
Serial.write('b'); 
Serial.write('c'); 
Serial.write('d'); 


} 

`

的Python
ser = serial.Serial('COM4',9600,timeout=0) ser.close() ser.open() up = ser.read() right = ser.read() left =ser.read() down = ser.read()

+0

爲什麼不'打印ser.read(4)'...你應該看到他們都在爲了未來通過...... –

+0

你爲什麼不發送一個字符串,如 「A:B:C:d \ n」(用newline delimiter),使用serial.readline(),然後去掉換行符,拆分字符串,得到a,b,c,d :)讓它們按順序更安全,並且確保在應用程序中放棄串行緩衝區開始 –

+0

我試着打印ser.read(4)...但它的值不斷變化 – mido

回答

0

我猜這是因爲兩者之間沒有同步。 ardi坐在那裏,吐出a,b,c,d,a,b,c,d,a,b,c,d等等。當python代碼連接時,沒有任何東西讓'ardi'開始於'a'它只是繼續這樣做,Python代碼獲取的數據從當時的任何ardi開始。如果您允許重複循環,請注意您的問題描述中的字符總是如何排列?

嘗試具有Python代碼(在啓動時),送點東西給ARDI,使其重新啓動從一開始序列。

+0

我已經這樣做,它正在工作 – mido