CH340是否支持通過pyserial控制RTS管腳狀態(tài)?
如果支持,可否提供示例,謝謝
CH340是否支持通過pyserial控制RTS管腳狀態(tài)?
如果支持,可否提供示例,謝謝
您好,使用pyserial操作串口,正常打開串口之后調(diào)用setRTS方法即可。
Win10環(huán)境,當(dāng)前最新CH340驅(qū)動版本,實測如下代碼:
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}')
雖然結(jié)果回讀正常,但是萬用表實測RTS管腳始終維持在高電平,并沒有實際翻轉(zhuǎn)。
請教可能是哪方面出了問題?謝謝
您好,如果單獨控制RTS引腳,在open時候其serial參數(shù)"ser.rtscts = False",此操作為不使能RTS流控功能,此時再調(diào)用setRTS方法對其進(jìn)行控制。
程序修改后
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
問題依舊存在,不知道哪里設(shè)置出了問題
您好,使用setRTS(True)拉低RTS,setRTS(False)恢復(fù)為高電平,您可交替設(shè)置加上對應(yīng)延時可看見電平狀態(tài)。
嗯,謝謝提示,測試已經(jīng)成功
無意中發(fā)現(xiàn)一個小bug,如果在打開串口前設(shè)置setRTS(False)拉高RTS,理論上講RTS應(yīng)該始終處于高態(tài),但是實測看到的情況是在打開串口的一瞬間出現(xiàn)一個非常窄的下拉脈沖,請問這種情況如何避免?
您好,硬件第一次接入系統(tǒng)第一次打開串口產(chǎn)生的脈沖屬于標(biāo)準(zhǔn)行為,并非程序bug。后續(xù)再打開串口時是沒有此波形的。