Cygwin не показывает COM-порты, пока я не открою последовательный монитор Arduino - PullRequest
0 голосов
/ 14 марта 2020

Проблема

У меня проблема с чтением доступных COM-портов в Cygwin. Поэтому в основном я подключаю arduino, а затем использую скрипт python для отображения доступных COM-портов.

Проблема заключается в том, что когда я подключаю arduino в первый раз, а затем выполняю свой скрипт, он не показывает никаких COM-портов , Я должен открыть Serial Monitor Arduino и только тогда, когда я запускаю свой скрипт, он показывает COM-порт.

Arduino использует порт COM5.

Скрипт не возвращает COM-порты, когда arduino подключен, но команда ls /dev видит "ttyS4":

Python script, arduino first plug ls dev

Затем, когда я открываю последовательный порт Arduino и перезапускаю свой скрипт:

enter image description here

Я использую Cygwin версии 3.1.4, Python 3.6.9 и Pyserial 3.4.

Python скрипт:


import sys
import glob
import serial


def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')

    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result


if __name__ == '__main__':
    print(serial_ports())

Что я нашел

После некоторых исследований я нашел следующее: { ссылка }

У вас все еще может быть проблема с блокировкой ввода до получения CR - я делаю .

И { ссылка }

Однако последовательный порт не будет работать, пока вы не используете программный последовательный терминал Arduino, ИЛИ Putty, ИЛИ команда Cygwin 'screen', чтобы открыть последовательный порт Arduino.

Эти ответы относятся к 2011 и 2013 гг., я сталкиваюсь с одной и той же проблемой, и каждый раз, когда я хочу запустить свой код, я должен открыть Серийный монитор первый ich немного раздражает. Так что я думаю, что это проблема Cygwin, связанная с виртуальными портами, и при открытии монитора Serial он позволяет Cygwin показывать COM-порт, но мне не удалось найти обходной путь.

...