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

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

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

  • Чтение из последовательного порта самым простым способом?
  • Просмотр (мониторинг) состояния линии последовательного порта
  • Как установить последовательный порт в режим RS-485?
  • Как отправить на виртуальный последовательный порт и прочитать из другой программы?
  • чтение параметров последовательного порта с терминала
  • Как использовать последовательный порт в Linux, например, канал или netcat?
  • Каков самый простой способ настройки последовательного порта в Linux?
  • UUCP на старом Xenix с последовательной линией без модема
  • 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.

    Interesting Posts

    Должен ли демон-демона самонадеянно себя зарекомендовать?

    Обходной путь для отсутствующей опции rm -I на OSX?

    Как удалить строки в файле с определенной позиции до конца файла

    Расширение списка, разделенного запятыми, на отдельные строки

    Запись NUL в syslog?

    Как связать Ctrl + стрелки / backspace / del с командами Readline

    Как предотвратить включение DPMS при открытии полноэкранного окна?

    Зачистка блоков с нулевым байтом с разреженным файлом?

    Сеть через мост в виртуальной машине довольно неустойчива

    Переименование пакетного файла с помощью подстановочного поиска

    Эффективное извлечение данных из нескольких файлов в один файл CSV

    Безопасное отключение REISUB

    Есть ли способ создать новый файл и вставить текст в этот файл с помощью bash?

    Команда для снятия скриншота с нового файла

    Как я могу изменить дату, измененную для папки, на последний измененный файл внутри?

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