MDrive 23电机接收来自终端的命令,我让它使用屏幕程序:
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()
我不知道如何设置其他init变量,例如:
parity = serial.PARITY_ODD,
stopbits = serial.STOPBITS_TWO
bytesize = serial.SEVENBITS
接下来我会尝试猜测一些值...文档很蹩脚,但它提到了MODBUS TCP和Mcode。
如何设置这些内容并在我的代码段中出现语法错误?
我知道如何向Serial对象发送参数,但我不知道什么值是典型值。
答案 0 :(得分:1)
Serial构造函数的其他参数的设置方式与port和baudrate类似:
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()命令在返回已读取的内容之前将阻塞多长时间。