Перенаправить один последовательный порт на другой в Linux

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

Я уже знаю, какие порты я использую, и искал программу под названием socat, которая должна с этим справиться, но примеров того, как это сделать, нет, и я не смог понять, как это сделать.

Кто-нибудь смог использовать socat или bash scipt/какой-то другой метод для выполнения этого в Linux??

Я использую Ubuntu 14.04.


person Ludefice    schedule 23.07.2015    source источник


Ответы (1)


Предполагая, что последовательный порт, с которого вы читаете, — /dev/ttyS0, а другой, на который вы записываете (к которому подключено радио), — /dev/ttyS1, вы должны просто сделать:

cat /dev/ttyS0 > /dev/ttyS1

or

dd if=/dev/ttyS0 of=/dev/ttyS1 bs=1

Конечно, перед этим вы должны установить все параметры последовательных портов с помощью команды stty.

person nsilent22    schedule 23.07.2015
comment
Оба этих предложения работали для передачи данных из одного порта в другой, однако на другом конце, где я получаю данные, они поступают в одну строку, за которой следует пустая строка. Можно ли регистрировать данные, которые я передаю с порта на порт, используя cat или dd? Есть ли опция, которую я могу добавить, чтобы остановить отправку этих пустых строк? - person Ludefice; 24.07.2015
comment
Попробуйте использовать команду tee: cat /dev/ttyS0 | tee logfile.log > /dev/ttyS1. Сравните logfile.log с тем, что было получено. Также убедитесь, что ваши настройки tty верны. - person nsilent22; 24.07.2015
comment
Похоже, что получатель получает все данные, но по какой-то причине добавляются дополнительные строки либо при передаче, либо у получателя. На стороне передатчика logfile.log данные не содержат лишних пустых строк. Спасибо за вашу помощь! - person Ludefice; 24.07.2015
comment
Вы установили свой ttys как «сырой»? Попробуйте: stty -F /dev/ttySnum raw -echo speed, где «скорость», например. 19200, а «num» — номер последовательного порта (0, 1 и т. д.). - person nsilent22; 24.07.2015
comment
Да, я пробовал это, но мне не повезло... Я думаю, что это может быть проблема с конфигурацией, которая не имеет ничего общего с радио или трубопроводами. Я дам вам знать, если я подозреваю, что это не так. - person Ludefice; 24.07.2015
comment
@Ludefice у тебя нет конфига. проблема. То же самое происходит здесь, на моем терминале; Socat — это то, что нужно, но справочная страница исходит прямо из ада. - person Wyatt Ward; 29.01.2016