Связь через консоль RS232 - установите скорость передачи данных в 1 МБод
В скрипте bash я использую следующее:
$ stty -F /dev/ttyUSB0 921600 raw
$ echo -n "some test data" >/dev/ttyUSB0
и работает как положено. Использование адаптера PL2303 USB-RS232:
$ lsusb
...
Bus 006 Device 010: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 006 Device 011: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Теперь я попытался сделать то же самое с 1 МБд, но получил ошибку:
$ stty -F /dev/ttyUSB0 1000000 raw
stty: /dev/ttyUSB0: unable to perform all requested operations
Также то же самое сообщение, когда я пытаюсь с 500 кБд. При попытке 250 кБд сообщение об ошибке другое:
$ stty -F /dev/ttyUSB0 250000 raw
stty: invalid argument `250000'
Try `stty --help' for more information.
Как видно здесь, это проблема в драйвере Linux PL2303.
Я работаю над Kubuntu 12.04, 32 Bit. К сожалению, я не знаю, как исправить этот драйвер в моей системе (получение исходного кода драйвера, их исправление, компиляция, установка… хм, может быть, я немного изучу и попробую - совет приветствуется).
Но, может быть, есть обновленный драйвер, который легко установить?
Или кто-то знает альтернативный адаптер USB-RS232, который работает на 1 МБод (необходим аппаратный контроль потока через rts/cts, который довольно хорошо работает с PL2303)?
1 ответ
После осознания того, что "Prolific и FTDI являются конкурентами", я купил Ftdi US232R-10, который является устройством на базе FT232R и указан для скорости передачи 1 МБод.
С помощью этого адаптера я успешно проверил связь на 1 МБд, передав некоторые данные GiB без каких-либо ошибок (включая использование аппаратного управления потоком Rts/Cts).
Настройка этого устройства с помощью stty:
$ stty -F /dev/ttyUSB0 1000000 raw
работает успешно.