2015-09-20 94 views
0

嘗試使用pySerial模塊從串行端口讀取數據,我無法重建從微控制器(MSP430)發送的數據。PySerial:從串行端口讀取時數據損壞

微控制器被編程如下:

Serial.print(0x20); //32 in decimal 
delay(200); 
Serial.print(0x20); //32 in decimal 
delay(200); 
Serial.print(0x00); //0 in decimal 
delay(500); 
Serial.print(0x15); //21 in decimal 
delay(500); 

以上代碼中無限循環被執行。

在Python代碼中,我只是使用以下代碼讀取120個字節並檢查串口變量。

import serial 
ser = serial.Serial('/dev/ttyACM1', 115200, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS,) 
cycles_needed = 120 
chars=[] 
s=ser.read(cycles_needed) 
for i in range(len(s)): 
    print s[i] 

上述代碼的輸出是

3 
2 
3 
2 
0 
2 
1 
3 
2 
3 
2 
0 
2 
1 

能有人請解釋我爲什麼將數據分割成半字節,而理想的,它必須連續讀取數據的逐字節。

回答

2

Arduino的documentation of Serial.print()說:

打印數據到串口作爲人類可讀的ASCII文本。

所以此值32最終成爲兩個字符,32

要寫入二進制數據,請改爲使用write()

+0

謝謝。這工作! – pseudosick