Я пытаюсь прочитать данные с простого последовательного порта USB COM3 с помощью PySerial.
Мой код выглядит следующим образом:
import serial
import time
ser = serial.Serial("COM3", 230400, timeout=2) #Also tried timeout=None, loads to infinity then
print (ser)
while True:
line = ser.readline() #also tried read()
print(line)
time.sleep(1)
Выход консоли:
print(ser)
=> Serial<id=0x2757c50, open=True>(port='COM3', baudrate=230400, bytesize=8, parity='N', stopbits=1, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False)
Я пытался возиться слогические атрибуты объекта Serial ser
(например, xonxoff
) безуспешно
print(line)
=> empty string
или b''
Я пытался проверить это вPython 2.7 и Python 3.6.5.
Вывод списка всех COM-портов через serial.tools.list_ports.comports()
возвращает это:
COM3 - USB Serial Port (COM3)
COM46 - com0com - serial port emulator CNCA0 (COM46)
COM47 - com0com - serial port emulator CNCB0 (COM47)
Когда я использую программу HDTerm, я получаю следующий вывод: Screenshot_HDTerm_COM3_Port_Output
Таким образом, порт на самом деле что-то возвращает, но я не могу как-то прочитать данные из python.Параметры в моем коде Python такие же, как и в HDTerm.
Есть идеи, почему Python ничего не печатает (или загружает в бесконечность, если timeout=None
)?
PS .: COM46 и COM47 прекрасно работают в Python и HDTerm.Но у них есть другие выходы (только отправка и получение данных друг от друга).