2013-01-23 37 views
0

我正在嘗試與使用python和pySerial以ASCII格式進行通信的規模進行通信。我沒有經驗如何使用ASCII格式。所以我有基本的問題。 我會如何使用pySerial發送一個字符T,並使用ASCII格式以CRLF來終止它? 我試圖發送和讀取pySerial中的ASCII值

myserialport.write('TCRLF') 
myserialport.write('T\r\n') 
myserialport.write('T\n\r') 

我也想從我希望是在「208.01克」例如形成規模讀取數據。但是當我使用

myserialport.read(10) 

myserialport.readline(10) 

我得到這個從規模

]ëýýÿ]W 
ÿ]u_u]ÿ]uÕ 
ýWýWë]uÝõW 
ÿ½õÿ½WW]Ýý 
WýW]Wÿ½ÿ×ë 

從Google上搜尋它似乎pySerial應在默認情況下,ASCII格式接收數據,併發送以及...但我失去了爲什麼它不工作。任何幫助,將不勝感激。

+1

最有可能是你的速度(波特率)錯誤 –

+0

規模和pySerial都設置爲9600.我那是最初的問題,所以我試過2400,但沒有運氣 – user1957292

+0

檢查它的工作原理超文本和你有速度/位/停止/奇偶設置正確 –

回答

1

這是與CRLF發送一個字符到串行端口的正確方法:

myserialport.write('T\r\n') 

關於凌亂的響應 - 確保您設置的波特率,數據位的個數,停止位和校驗位正確。您可以在比例數據表中找到所需的值。

例如:

from serial import Serial, SEVENBITS, STOPBITS_ONE, PARITY_EVEN 
myserialport = Serial('/dev/ttyS0', baudrate=9600, bytesize=SEVENBITS, parity=PARITY_EVEN, stopbits=STOPBITS_ONE) 
+0

因爲他們是prinitng擴展ascii字符,我的猜測是他們有數據/停止位錯誤 –

+0

嗯謝謝。我將再次檢查停止位和多餘位是否設置正確。現在,我將它作爲serial.Serial(portnum,9600,bytesize = 8,parity ='N',stopbits = 1,timeout = 5)並將scale設置爲相同的設置。如果我無法得到它的工作,那麼它可能是規模的硬件或軟件問題。 – user1957292

0

的問題是在USB接地連接到串行轉換器(需要腳7被接地)。如果你有同樣的問題,請檢查你的針腳。 (費希爾Scintific刻度使用第7針作爲地面,這是不正常的,因爲第5針是地面......奇怪......)謝謝大家。