stty не меняет скорость последовательного порта в Cygwin

Это подразумевает запуск Cygwin под Windows XP. У меня есть подлинный последовательный порт (COM1) на этой машине.

After booting up, a program I've written gets garbled responses when trying to communicate through the serial port. If I run Hyperterminal and set the "baud" rate, then exit, everything works normally from then onward.

I first attempted to set the speed from the program (using termios calls) and that didn't work. So I decided to try changing the speed using an existing utility. Using a command like stty -F /dev/ttyS0 9600 принимается, и если я попробую другую скорость, я увижу изменение, когда я проверю его с stty -F /dev/ttyS0, Но это не оказывает видимого влияния на фактическую скорость.

Мне трудно представить, что если Cygwin не сможет изменить скорость передачи данных, я не найду такого утверждения в своем поиске. Но я не нашел ничего подобного.

Я полагаю, что это может быть какая-то настройка, отличная от бит в секунду, которую нужно исправить. Но я не вижу ничего в возвращенном отчете, чтобы предположить это. Возможно, я проверю это, пытаясь выяснить, с какой скоростью это происходит.

Изменить: я проверил с помощью осциллографа, и скорость передачи (выход, по крайней мере), действительно меняется на 9600, как я и предполагал. Итак, я сейчас собираюсь посмотреть на другие возможные настройки, которые могут мешать связи.

Решение: Одной вещью, которая очень помогла, было мое открытие, что виртуальный последовательный порт USB будет самопроизвольно инициализироваться каждый раз, когда он был отключен. Это избавило от необходимости перезагрузки хоста, чтобы отменить все, что HyperTerminal делал для решения проблемы. Таким образом, я смог сделать много тестов за короткое время.

Решение пришло, когда я нашел команду stty -F /dev/ttyS0 -a чтобы получить все параметры порта. Я запускал его до и после того, как позволил HyperTerminal "решить" проблему, записав выходные данные в файлы, а затем используя результаты сравнения. Результаты, достижения: cs7, Это количество бит в каждом символе. Что-то инициализирует последовательные порты на N-7-1 по умолчанию. Решение, таким образом, так же просто, как:

stty -F /dev/ttyS0 9600 cs8

Примечание. Первоначальная проблема началась с вызовов termios. Там же можно применить то же решение. Но это вопрос, который необходимо решать в Stackoverflow.

1 ответ

Решение

Используйте эту команду,

stty -F /dev/ttyS0

чтобы получить все настройки порта. Затем посмотрите, что изменилось после начала работы порта.

Другие вопросы по тегам