2013-04-27 95 views
3

我有一個Arduino開發板通過串口和一段Python代碼讀取數據。在Arduino板只是將它從TMP36傳感器讀取的溫度,當我使用自帶的Arduino的IDE端口監視器檢查端口我看到這一點:瞭解從Arduino收到的字符

20.3 
20.3 
20.2 
20.2 
... 

這是完全正確的。現在,當我使用Python讀取串行端口時,我得到:

b'20.32\r\n' 
b'20.32\r\n' 
b'20.32\r\n' 
b'20.80\r\n' 
... 

這是什麼東西?我如何處理字符串,以便正確顯示數字?

這裏是我使用的代碼:

import serial 

ser = serial.Serial('/dev/ttyACM0', 9600) 
while True: 
    message = ser.readline() 
    print(message) 

道歉,如果這是一個愚蠢的問題,但我是新來的Arduino,Python和串行編程:)

回答

3

b前綴在Python 3只是意味着它是一個bytes文字。它不是輸出的一部分,只是告訴你類型。

\r\n是一個普通的回車符和換行符結尾字符。您可以撥打strip()將其從字符串中刪除。

自從被退回這些都是浮點數,我猜你會想使用它們以某種方式被讀取後,太:

import serial 

ser = serial.Serial('/dev/ttyACM0', 9600) 
while True: 
    value = float(ser.readline().strip()) 
    print 'New value is {0:0.2f}'.format(value) 

參見:

1

您還可以使用decode()strip()一次。

b'20.32\r\n'.decode().strip('\r\n') 

會給你:

'20.32'