2013-02-23 78 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]