2013-05-13 50 views
0

我試圖在我的PC和微控制器(MC)之間進行通信。我的微控制器將使用getchar()進行讀取,直到讀取4個字符,或者碰到字符'\0','\''\r'Pyserial字符串到字節編碼寫入到微控制器

該通信與超級終端完美無瑕。然而,我的Python腳本似乎並沒有發送'\0','\''\r'編碼輸入字符串並連接到一個特殊字符。

command = input("Enter Command: ") 
port.write(bytes(command + '\n', 'UTF-8')) 

所以,如果我輸入的命令x應發送'x''\n'和MC應該停止等待更多的字符,因爲新線的讀取。但是,如果我只輸入x,則MC將等待另外4個字符的讀取。
如何將字符串正確轉換爲字節?謝謝。

的MC代碼是:

map(ord,command+'\n')bytearray(command+'\n',"UTF-8")

如果:

buffer[ii] = getchar(); 

while(buffer[ii] != '\0' && buffer[ii] != '\n' && buffer[ii] != '\r' && ii < 4 - 1) 
{ 
    buffer[++ii] = getchar(); 
} 

回答

1

您可以通過字符串轉換成整數的數組0 < = N < = 256你必須逐個寫入每個字節到端口:

>>> for b in bytearray("message\n","UTF-8"): 
...  port.write(b) 

應該這樣做。

+0

謝謝。所以我必須一次發送一個字節,但也要加上10毫秒的延遲。好像python會一次發送整個消息,而超級終端一次發送一個字節。 getchar()似乎看着第一個字符,然後其餘的數據在pyserial中丟失了。 上面for循環代碼的一個小改動是b必須首先轉換爲一個字節。 – roverred 2013-05-13 04:48:52