2013-04-30 40 views
0

下的MDrive電機23從終端需要的命令,我得到了它與屏幕計劃合作:控制的MDrive 23與Python的Linux

screen /dev/ttyUSB0 

這是被稱爲串行終端?我不熟悉連接的細節,但覺得我應該可以使用PySerial發送命令。

我想:

import serial 
ser = serial.Serial('/dev/ttyUSB0', 19200) 
ser.isOpen() # Returns True 
ser.write('ma 100000\r\n') # Does nothing... 
ser.inWaiting() # Returns 0 
ser.close() 

我不知道如何設置其他初始化變量,如:

parity = serial.PARITY_ODD, 
stopbits = serial.STOPBITS_TWO 
bytesize = serial.SEVENBITS  

我要去嘗試下一個猜測一些值的...文檔是蹩腳的,但它提到了MODBUS TCP和Mcode。

如何設置這些和我的代碼段中是否存在任何語法錯誤?

我知道如何將參數發送到串行對象,但我不知道什麼值是典型的。

回答

1

其他參數到串行構造以類似的方式了端口和波特率被設定:

ser = serial.Serial(port = '/dev/ttyUSB0', baudrate=19200, bytesize=serial.SEVENBITS, parity=serial.PARITY_ODD, stopbits=serial.STOPBITS_TWO) 

ser.write('whatever') 
ser.flush() # wait for data to be written 
ser.close() 

編輯:seems默認設置是9600波特,8位,無奇偶校驗位和1停止位。另外,不使用流量控制。這將相當於:

ser = serial.Serial(port = '/dev/ttyUSB0', baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, xonxoff=False, rtscts=False, dsrdtr=False) 

由於所有值,除了口,都設置爲默認值,你可以使用:

ser = serial.Serial(port = '/dev/ttyUSB0') 

的最後一件事擔心是(讀取)超時組。這是以秒爲單位測量/設置的(允許浮點數),並設置read()命令在返回讀取之前將會阻塞的時間。

+0

thx的思想,我知道如何發送參數到對象實例,我只是不明白變量本身,並知道他們的價值是一個很好的猜測。 – wbg 2013-04-30 21:09:10

+0

我已經更新了我的答案,關於bytesize,parity等的信息。 – Micke 2013-05-03 08:57:25

+0

謝謝Micke。我試圖超時= 0,看到輸入回聲和輸出流,並感到困惑,現在我明白better.The文件列出幾個波特率,但它似乎並不是所有的人都可以工作。 – wbg 2013-05-04 16:52:35