Имеется устройство которое маршрутизирует сигналы передаваемые с компьютера по RS232 на другие устройства в зависимости от адреса, задаваемого с помощью линий DTR, RTS.
Т.е. чтобы передать посылку одному устройству нужно установить DTR = 1, RTS = 0 и отправить в порт посылку. Для другого устройства соответственно (DTR = 0, RTS = 1).
Проблема в том, что во время выполнения программы уровень DTR у меня устанавливается на короткий промежуток времени, затем сбрасывается в 0 и после этого отправляется посылка. Никак не могу разобраться почему так происходит и как перманентно установить уровень на линии DTR (и на линии RTS). Нагуглил только информацию по второму питону, но там устаревшие команды, которые из pyserial были упразднены. Складывается впечатление что в третьем Питоне это нереально. Может кто-нибудь сталкивался с такой проблемой?
Моя функция которая производит запись в порт.
[code python]
def serial_tx(parcel):
try:
ser = serial.Serial(combo.get(), 9600, timeout = 1)
if parcel == 2:
ser.dtr(1)
ser.rts(0)
time.sleep(0.5)
parcel_send = '812000065670'
parcel_full = bytes.fromhex(parcel_send)
ser.write(parcel_full)
serial_rx(parcel)
elif parcel == 1:
ser.rts = 1
ser.dtr = 0
time.sleep(0.5)
parcel_send = '8116052033'
parcel_full = bytes.fromhex(parcel_send)
ser.write(parcel_full)
except Exception:
lbl_error_com = Label(lbl_rx_data_dc, text = "Не удалось открыть COM-порт\nПовторите попытку снова\n \n ", foreground = 'red')
lbl_error_com.place(x=5, y=5)
[/code]