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