Последовательная связь с python - PullRequest
1 голос
/ 10 марта 2020

Я немного поиграюсь с python для последовательной связи, у меня есть переключатель, который взаимодействует с экраном, и к этому экрану, в свою очередь, подключено 2 компьютера, подключенных к его портам HDMI, и я хочу изменить этот переключатель. от порта HDMI1 к порту HDMI2 то, что я пробовал, выглядит следующим образом:

import pyserial

connection = serial.Serial(
        'COM1',
        baudrate=9600,
        bytesize=8,
        patity='N',
        stopbits=1
    )

Я действительно считаю, что соединение установлено, когда я делаю следующее connection.is_open, ответ - True.

Однако я думаю, что моя проблема в том, как правильно составить цепочку, которая отправляет команды на коммутатор через функцию connection.write()

  • r source! (чтение входного источника в это время)
  • s источник 1! (переключение входа HDMI1 (1: HDMI1,2: HDMI2, 3: HDMI3,4: DisplayPort, 5: VGA / YPBPR / C -VIDEO))
  • s hdmi1 auido 0! (Выбор источника звука в качестве аудиовхода HDMI1 (0: Emb, 1: Ext1,2: Ext2, 3: Ext3,4: Ext4,5: Ext5))

Я действительно считаю, что моя настоящая проблема не в том, как сочинять т Командная строка, которая отправляется с функцией write(), которую необходимо учитывать, заключается в том, что я использую python 2.7 и windows.

. Правда в том, что я новичок ie, если вы может помочь мне, я буду очень благодарен.

1 Ответ

0 голосов
/ 10 марта 2020

просто установите тайм-аут и читайте, пока это не произойдет

import pyserial
connection = serial.Serial(
        'COM1',
        baudrate=9600,
        bytesize=8,
        patity='N',
        stopbits=1,
        timeout=1 # could probably be less
    )
# maybe .... are there some docs for whatever switch you are using?
connection.write("r source!\n")
# you might need connection.write(b"r source!")
print(connection.read(1000)) # try and read 1000 bytes or until timeout ocurres(1 sec)
# if you knew what the terminal character the device sends is you could just readuntil that character
...