CH340是否支持通过pyserial控制RTS管脚状态

CH340是否支持通过pyserial控制RTS管脚状态?

如果支持,可否提供示例,谢谢

您好,使用pyserial操作串口,正常打开串口之后调用setRTS方法即可。


Win10环境,当前最新CH340驱动版本,实测如下代码:

import serial

ser=serial.Serial()
ser.port = "COM1"
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout= .1
ser.xonxoff = False
ser.rtscts = True
ser.dsrdtr = False
ser.writeTimeout = 0
ser.open()         # open the serial port

print(f'The default value of RTS pin is {ser.rts}')
ser.rts = True
print(f'The value of RTS pin is {ser.rts}')
# ser.rts = False
ser.setRTS(False)
print(f'The value of RTS pin is {ser.rts}')


虽然结果回读正常,但是万用表实测RTS管脚始终维持在高电平,并没有实际翻转。

请教可能是哪方面出了问题?谢谢


您好,如果单独控制RTS引脚,在open时候其serial参数"ser.rtscts = False",此操作为不使能RTS流控功能,此时再调用setRTS方法对其进行控制。


程序修改后


import serial
from time import sleep

ser=serial.Serial()
ser.port = "COM1"
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout = .1
ser.xonxoff = False
ser.rtscts = False
ser.dsrdtr = False
ser.writeTimeout = 0
ser.open()

ser.setRTS(False)

sleep(200)


在此期间测量RTS管脚(该管脚悬空),电压始终为5V


问题依旧存在,不知道哪里设置出了问题


您好,使用setRTS(True)拉低RTS,setRTS(False)恢复为高电平,您可交替设置加上对应延时可看见电平状态。


嗯,谢谢提示,测试已经成功

无意中发现一个小bug,如果在打开串口前设置setRTS(False)拉高RTS,理论上讲RTS应该始终处于高态,但是实测看到的情况是在打开串口的一瞬间出现一个非常窄的下拉脉冲,请问这种情况如何避免?


您好,硬件第一次接入系统第一次打开串口产生的脉冲属于标准行为,并非程序bug。后续再打开串口时是没有此波形的。


只有登录才能回复,可以选择微信账号登录