Как я могу слушать связь между процессом и последовательным портом?

На машине Gentoo Linux процесс взаимодействует с другим компьютером через последовательный порт ( /dev/ttyS1 ). Я хочу слушать это сообщение (то есть то, что отправляется / принимается процессом), без дальнейшего вмешательства.

Как я могу достичь этого с помощью простых инструментов Linux? Я даже могу изменить последовательный порт, с которым процесс взаимодействует, поэтому, возможно, я могу «сократить» два устройства ( /dev/ttyS1 и /dev/xxx ) слушать всю связь, когда весь вывод в /dev/ttyS1 в /dev/xxx и наоборот. Но как мне это сделать? Что-то с socat ?

  • Отправить файл через последовательный порт с помощью протокола XMODEM
  • Просмотр (мониторинг) состояния линии последовательного порта
  • Где ядро ​​поддерживает конфигурацию последовательного порта?
  • Как установить последовательный порт в режим RS-485?
  • Опрос для информации о последовательном порту
  • Обнаружение, когда последовательный RX переходит в режим ожидания между пакетами данных
  • Чтение из последовательного порта самым простым способом?
  • Опрос для информации о последовательном порту
  • Как использовать последовательный порт в Linux, например, канал или netcat?
  • Повторный заказ последовательных портов на многопортовой карте
  • Где ядро ​​поддерживает конфигурацию последовательного порта?
  • Просмотр (мониторинг) состояния линии последовательного порта
  • 2 Solutions collect form web for “Как я могу слушать связь между процессом и последовательным портом?”

    Один подход (не обязательно лучший …) заключается в том, чтобы привязать strace к процессу (или, чтобы обработать условие гонки, к сценарию обертки, который выполняет этот процесс), установите strace на максимальную длину строки, а затем catch all read() s и write() s (или независимо от того, что использует ваш процесс). После этого вы вставляете строки с правильным файловым дескриптором (который всегда должен быть одним и тем же, а если нет, вам также нужно поймать open() s).

    перехват выглядит так, как вы хотите.

    Я нашел, что с этой страницы Ubuntu

    interceptty – перехват трафика на последовательный порт и обратно.

    пример

    Если вы хотите использовать перехват в качестве внешнего последовательного монитора [подключенного к двум последовательным портам на вашем компьютере и ретрансляции между ними при записи вывода]

    вы можете использовать одно устройство в качестве бэкэнд и использовать параметр -p, чтобы сообщить интерфейсу не создавать его собственный tty, а просто использовать тот, который вы ему скажете:

     interceptty -s 'ispeed 19200 ospeed 19200' /dev/ttyS0 -p /dev/ttyS1 - 

    Вывод

    interceptty печатает свой результат в довольно непривлекательном, болезненном взгляде на формат. Однако для других программ очень легко разбираться. Пример того, как отправить этот вывод во что-то подходящее для того, что вы перехватываете, см. Включенный в Perl скрипт перехвата-nicedump.

    Выходные строки находятся в этом общем формате:

    <0x54 (T)

      0x4b (K) ^ Direction ^^^^ Hex code (to real device) ^^^ ASCII character (to real device) ^^^^ Hex code (from real device) ^^^ ASCII character (from real device) The direction marker is a '<' if this character was sent to the backend device, and 

    '>', если он был получен с бэкэнд-устройства. За ним всегда следует одно место. Если символ был получен с реального устройства, следующая вкладка появится (это упростит работу). После этого это шестнадцатеричный код для символа и представление ASCII символа, если оно является символом ASCII.

    Linux и Unix - лучшая ОС в мире.