2016-04-26 3 views
0

私はarduinoからPythonに4文字を送るプロジェクトを行っていました。そのためPythonの最初の変数は最初に送られた文字を読み込み、2番目の変数は2番目の文字を読み込みます私はそれが安定していない同期の画面にそれらを印刷します。 ie: 'a'、 'b'、 'c'、 'd'を送信し、Pythonで 'a'、 'b'、 'c'、 'd'を受け取ることを期待しています。 私が受け取るものは、 'c'、 'd'、 'a'、 'b'または 'b'、 'c'、 'd'、 'a'のようなものです。Pythonは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

はなぜいけない、あなたは次のように文字列を送信 ":B:A C:Dの\ nを"(改行を区切って)、serial.readline()を使用して、新しい行を分割し、文字列を分割し、a、b、c、dを取得する:より安全な順序で取得し、 –

+0

私はprint ser.read(4)を試しました...しかし値は変わりません。 – mido

答えて

0

私は2つの間には、同期がないのでそれは推測しています。 ardiがそこに座って、a、b、c、d、a、b、c、d、a、b、c、dなどを吐き出す。Pythonコードが接続すると、ardiを 'a'それはやっているだけでやっているし、Pythonコードはその時点でardiが何であってもデータを取得します。あなたの問題の説明で、繰り返しのサイクルを許すならば、文字はいつも順番どおりになっていますか?

ardiに何かを送信して、最初からシーケンスを再開するように、Pythonコード(起動時)を試してください。

+0

私はすでにこれを行いました。それは働いている – mido

関連する問題