2013-02-23 112 views
0

嗨,我正在凝視,並已破解從Python發送多位信息到我的Arduino。我現在想從我的Arduino發送信息到python,我看過可能的例子,但它們都發送只顯示一行信息被髮送。Arduino到python串行讀取分割

他是我堅持的東西。Arduino發送一個開始號碼255然後一個ID,然後在終端窗口上看起來像這樣的信息。

255 start chr 

1 ch ID 

99 Value 

我想將它們拆分成python中的單個數組。

感謝您的任何提示。

+0

是實際輸出'Arduino的「開始chr」?值之間有兩條新行嗎?或者你收到'255199'? – Eric 2013-02-23 09:55:13

+0

它只是在單獨的行上輸出255 1 99。我想讓他們進入data0 data1 data2。 – 2013-02-23 13:36:46

回答

1

最簡單的方法是使用專用分隔符(例如逗號)並相應地拆分字符串。那就是:以這樣的方式編寫代碼的Arduino一側,以便在Python端解析變得容易。

+0

不知道你的意思,但我的arduino Serial.print(data0)Serial.print(data1)Serial.print(data2) – 2013-02-23 13:43:02

+0

@jamesjordan:'print'或'println'?該代碼會產生'255199',這是不可能解析的。 – Eric 2013-02-23 14:22:31

1

打印Arduino的項目與一個分隔符的線路,如像這樣一個逗號:

Serial.print(VALUE 1); 
    Serial.print((" , ")); 
    Serial.print(VALUE 2); 
    Serial.print((" , "));  
    Serial.println(LAST VALUE); 

使用的println最後值將所有以前的打印組合成一條線。隨着Arduino的串行監視器結果是這樣的:

VALUE 1 , VALUE 2 , LAST VALUE 

您可以在python容易分裂的價值觀和可變分配給每個值像數組取值:

SERIALDATA= sensorData.readline() #Read line of text from Arduino 
DATASPLIT= SERIALDATA.split(' , ') #Splits the line of text into array of strings composed of each individual sensor data 

pyVALUE1= DATASPLIT [0] 
pyVALUE2= DATASPLIT [1] 
pyFINALVAL= DATASPLIT [2]