Как я могу использовать COM и USB порты в Cygwin? - PullRequest
10 голосов
/ 24 мая 2010

Я хочу отправлять / получать данные с моей платы Arduino с помощью скрипта Python.Я хотел бы сделать это, используя Python и его модуль pySerial, который, кажется, соответствует моим потребностям.Поэтому я установил Python и pySerial в cygwin (Windows XP позади).

Сценарий Python довольно прост:

$ cat example.py

#print "testing my COM26 port using python"

import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 26
ser
ser.open()
ser.isOpen()

Однако во время выполнения я получаю следующую ошибку.

$ python example.py
Traceback (most recent call last):
  File "example.py", line 9, in <module>
    ser.open()
  File "/usr/lib/python2.5/site-packages/serial/serialposix.py", line 276, in open
    raise SerialException("could not open port %s: %s" % (self._port, msg))
serial.serialutil.SerialException: could not open port 26: [Errno 2] No such file or directory: '/dev/com27'

Не удалось открыть порт 26: [Errno 2] Нет такого файла или каталога: '/ dev / com27'

Как я узнаю, что мой Arduino подключен к порту COM27?

Ну, это просто.В Arduino IDE говорится, что я могу отправлять и получать данные из инструмента Serial Port Monitor для IDE, используя этот порт.Кроме того, мне удалось заставить работать гипертерминал с использованием этого порта.

Однако, похоже, Cygwin не знает о таких портах USB и COM:

$ ls -lah /dev
total 4,0K
.
..
fd -> /proc/self/fd
mqueue
shm
stderr -> /proc/self/fd/2
stdin -> /proc/self/fd/0
stdout -> /proc/self/fd/1

Следует отметить, что яЯ использую это на ноутбуке Dell, у которого нет классического последовательного COM-порта, только USB-порты.(Так что я думаю, это нормально, например, что /dev/com1 не существует.)

Я не знаю, правильно ли я спрашиваю, но мой вопрос: как я могу настроить Cygwin так, чтобы он стал в курсе этого порта COM27?

Ответы [ 5 ]

9 голосов
/ 23 августа 2011

Если Hyperterminal может получить к нему доступ, то он устанавливается как «виртуальный COM-порт». Cygwin позволит вам получить доступ к нему как / dev / ttyS26 (называемый COM27 в Windows). У вас все еще может быть проблема с блокировкой ввода, пока CR не получен - я так и делаю. (Пытаясь решить , что , я нашел это .)

3 голосов
/ 11 апреля 2016

Мой любимый -

socat.exe `tty`,raw,echo=0 /dev/ttyS15,raw,echo=0,setsid,sane

это COM16 (уже настроен Windows на 115200, непарность, отсутствие потока, 8b)

вам нужно:

tty и socat


socat.exe - /dev/ttyS15,raw,echo=0,setsid,sane

Вероятно, также будет работать (без пакета tty), или просто просто указать узел dev текущего терминала (можетбыть хитрым без tty пакета)

tty - вывести имя файла терминала, подключенного к стандартному входу

мои любимые ссылки:

  1. Использование socat для прямого последовательного соединения
  2. https://superuser.com/questions/123790/socat-and-rich-terminals-with-ctrlc-ctrlz-ctrld-propagation

У вас есть лучшие варианты?Затем, пожалуйста, уточните.

U можете использовать:

stty -F /dev/ttyS15 115200 cs8

, чтобы установить свой COM

TJ

2 голосов
/ 11 июня 2018

Последовательные порты в Windows отображаются на Cygwin как:

COM -> / dev / ttyS

Например, COM3 -> / dev / ttyS2

Файл example.py можно переписать для открытия COM3 как:

import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = "/dev/ttyS2"
ser
ser.open()
ser.isOpen()
1 голос
/ 24 мая 2010

Если вы используете ноутбук без COM-порта, вы не можете открыть этот порт и начать выполнять операции.

В Windows есть функция, чтобы открыть этот порт и изменить состояние некоторой линии (RST), прочитать состояния и выполнить передачу. Для порта LPT вы не можете сделать это в Windows, вы должны использовать некоторую библиотеку. Для USB это также проблема, вы должны знать устройство, подключенное к USB.

0 голосов
/ 12 мая 2017

Я нашел Брэда Инструмент Грэнтэма ОЧЕНЬ полезен и широко использовал его на работе. Это так легко построить и использовать.

Я просто пишу здесь, чтобы упомянуть, что я исправил в нем ошибку, которая приводила к выходу, если вы напечатали тильду, какой-нибудь другой текст, а затем точку. Так, например, набрав:

vim ~/.tmux.conf выведет вас из сеанса.

Вы можете найти его здесь: https://github.com/lime45/serial

...