Как связать два последовательных порта в GNU / Linux?

14981
AndrejaKo

Мне нужно, чтобы один последовательный порт принимал данные, а другой - для передачи одних и тех же данных. Как мне сделать такую ​​настройку в GNU / Linux. Один будет портом, созданным Bluetooth, а другой - адаптером USB-последовательный порт.

Скорее всего, я буду использовать новейшую версию 64-битного Mint (12, если я правильно помню).

4

2 ответа на вопрос

7
RedGrittyBrick

socat может обрабатывать последовательные порты.

Обычно он используется с сетевыми интерфейсами и может передавать данные, но он также обрабатывает последовательные устройства TTY. Примеры в приведенной выше ссылке не включают последовательную ретрансляцию, но из этих примеров вы, вероятно, сможете определить параметры команды, которые должны выполнить это.


Обновить:

Чтобы связать последовательный порт ttyS0 с другим последовательным портом:

 socat /dev/ttyS0,raw,echo=0,crnl /dev/ttyS1,raw,echo=0,crnl 

от http://technostuff.blogspot.co.uk/2008/10/some-useful-socat-commands.html

У socat также есть опции, так что вы можете, если хотите, записывать данные, которые передаются.

2
sawdust

Для быстрой и грязной процедуры настройте программу эмулятора терминала, такую ​​как minicom, для каждого последовательного порта. Это даст вам интерактивный полнодуплексный интерфейс для передачи текста между портами. Несколько протоколов передачи модема встроены для передачи файлов и двоичных данных.

Для более сложной передачи данных, например, обработки какого-либо пользовательского формата данных / протокола, вам нужно будет написать программу для доступа к последовательному порту для обработки данных.

ОБНОВИТЬ

Пожалуйста, предоставьте более подробную информацию о том, что вы пытаетесь сделать. Оба последовательных порта должны быть подключены к одному и тому же компьютеру или каждый порт к одному ПК? Есть ли какая-либо причина, по которой два последовательных порта не могут быть соединены друг с другом, если это является целью этого «вопроса о связывании»?

Поскольку один из «последовательных портов» является адаптером USB-RS232, нет необходимости подключать каждый последовательный порт через ПК. Соедините два последовательных порта друг с другом (может потребоваться подключение адаптера), а затем подключите USB к ПК. Используйте программу-эмулятор терминала для работы с одним последовательным портом, подключенным к ПК.

Bluetooth <----> USB adapter <---> PC 
Выглядит интересно. Есть ли какой-нибудь (относительно простой) способ сказать файл захвата канала так, чтобы один процесс minicom передавал то, что получает другой? В худшем случае даже вставки файла захвата в другое окно может быть достаточно. AndrejaKo 12 лет назад 0
Вы можете регистрировать (записывать) все, что отправлено и получено в каждой программе Minicom. Регистрация может быть выключена / приостановлена ​​и снова включена с помощью нажатий клавиш. Вам придется полностью прекратить запись в журнал, чтобы начать запись в другой файл журнала. sawdust 12 лет назад 0
Bluetooth имеет поддержку последовательной эмуляции, когда адаптеры Bluetooth обоих устройств создают виртуальные последовательные порты, которые для программного обеспечения выглядят как реальные последовательные порты. Стек Bluetooth операционной системы обычно используется для этого, а адаптеры Bluetooth, которые имеют реальные аппаратные последовательные порты, дороги и (по крайней мере для меня) труднодоступны. В моем мобильном телефоне есть GPS-приемник и программное обеспечение, которое может отправлять предложения NMEA через последовательный порт Bluetooth, который я могу получить на эмуляторе терминала на моем ПК, и я хочу перенаправить его на микроконтроллер, который позже обработает эти данные. AndrejaKo 12 лет назад 0
Позже микроконтроллер будет использоваться с приемником GPS с реальным последовательным портом, которого у меня нет на данный момент, и я хочу использовать мобильный телефон для разработки программного обеспечения на микроконтроллере, потому что оба модуля испускают тип предложения NMEA I необходимость. AndrejaKo 12 лет назад 0
Спасибо за разъяснения. Надеюсь, вы найдете решение. sawdust 12 лет назад 0

Похожие вопросы