#python #pyserial
Вопрос:
Я пытаюсь выполнить функцию автоматического сканирования КОМПОРТА. Однако целевое устройство «COM7» на рисунке не имеет имени, поэтому я не могу выполнить оператор if else на основе имени устройства. введите описание изображения здесь
поэтому я просканировал все порты и попытался открыть каждый из них методом Serial.serial.
for p in list(serial.tools.list_ports.comports()): try: with serial.Serial(port=p[0], baudrate=9600, timeout=0.01) as ser: msg = 10 ser.write(f"{msg}r".encode('utf-8')) time.sleep(0.1) ser.flushOutput() data = read_data(ser) # if the correct COM is connected, the MCU will return "ok, switched to DUT{msg}" if 'ok' in data: break except serial.serialutil.SerialException: pass
но для запуска потребовалось 10 секунд, в то время как если бы я запускал серийно.Последовательный(порт=’COM7′, скорость передачи данных=9600, время ожидания=0,01) требуется всего 0,1 с. Мне интересно, есть ли аргумент тайм-аута в сериале.Последовательный метод не работает? И есть ли какой-либо способ сократить время выполнения функции в течение 1 секунды?
Комментарии:
1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.