0

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()

我不知道如何设置其他初始化变量,例如:

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

接下来我将尝试猜测一些值...文档很蹩脚,但它提到了 MODBUS TCP 和 Mcode。

如何设置这些,我的代码段中是否有任何语法错误?

我知道如何向 Serial 对象发送参数,但我不知道什么值是典型的。

4

1 回答 1

1

Serial 构造函数的其他参数的设置方式与端口和波特率类似:

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()

编辑:似乎默认设置为 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() 命令在返回已读取的内容之前将阻塞多长时间。

于 2013-04-30T19:34:19.800 回答