
У меня есть работающее последовательное устройство, с которого мне нужно считывать данные (я не имею абсолютно никакого контроля над самим устройством), за исключением чтения его вывода; используя Hyper Terminal в Windows, я могу обнаружить значимый трафик, и вчера, когда я использовал cat (или мою собственную небольшую программу на C для считывания данных и вывода их в stdout), все работало нормально.
Сегодня, когда я использую cat/мою программу, все, что я получаю, — это поврежденные данные, хотя Hyper Terminal все еще отображает данные.
Что может быть не так? Как это могло работать вчера, но не работать сегодня?
Файл, который я читаю, это/dev/ttyUSB1
*Обратите внимание, что я никогда не запускаю ОБЕ программы и cat одновременно, только одну из них.
решение1
Кто-то на SO намекнул в правильном направлении: проблема была в скорости передачи данных, она была установлена на значение, отличное от того, которое мне нужно.
Чтобы проверить скорость передачи данных:
stty -F /dev/ttyUSB1
Чтобы установить скорость передачи данных:
stty -F /dev/ttyUSB1 57600
(в моем случае 57600 — это скорость передачи данных, необходимая моему устройству)
Теперь все работает как часы.
решение2
Последовательные порты — особенно странные звери. Вам нужно будет использовать программу эмуляции терминала старой школы. Я раньше думал, tip
что это лучшее, но, похоже, ни у кого больше нет исходников для него. cu
поставляется с UUCP, и это полная морока в установке и настройке, даже не беспокойтесь.
Быстрый поиск в Google подсказывает мне, что люди склонны использоватьминикомв эти дни.Вот вопрос на Stack Overflowпохоже, это имеет какое-то значение, по крайней мере при использовании minicom
для связи с последовательным USB-устройством.
Дайте нам знать, как это получится. Обновите свой вопрос или оставьте комментарий или что-нибудь еще.