Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Эмулировать последовательный порт

Автор вопроса: joaocandreОтветов: 1

Можно ли создать "виртуальное" последовательное устройство, которое отправляет данные через "виртуальный" последовательный порт? Мне нужно разработать код для взаимодействия с Arduino, но у меня его нет. Можно ли это сделать с помощью socat или кода, который записывает в dev/ttyXXX файл?

РЕДАКТИРОВАТЬ: я использую Arch Linux

  • Какая платформа? Linux, Windows, OSX, другие? Craig 22.03.2014
  • @Craig забыл упомянуть, я использую Linux joaocandre 22.03.2014

c++arduinoserial-portsocat

Ответы

Ответ 1 · рейтинг 16 · esorton

Да, вы можете использовать socat для имитации последовательного порта.

Вам необходимо использовать тип адреса Socat PTY:

PTY: Generates a pseudo terminal (pty) and uses its master side. Another
process may open the pty's slave side using it like a serial line or
terminal.

Самый простой вариант:

socat PTY,link=./virtual-tty,raw,echo=0 -

Приложение, которое вы тестируете, откроется virtual-tty. Вывод из вашего приложения будет напечатан на консоли. Введенный вами текст будет отправлен в ваше приложение.

Как отмечалось выше, тип адреса PTY создает peudo-terminal. Параметр link создает мягкую ссылку между псевдотерминалом и заданным файлом. Вы можете выбрать любое имя файла, какое пожелаете. Без софт-ссылки вам нужно было бы открыть устройство, и трудно определить правильный. raw переводит псевдотерминал в необработанный режим. Обычно вы этого хотите, поскольку вам не нужны какие-либо специальные параметры обработки терминала. echo=0 отключает режим эха.

Если у вас есть (или вы создаете) приложение, которое имитирует код, выполняемый на Arduino, вы также можете подключить его через socat. Если ваш симулятор общается через stdin / stdout, используйте следующую команду:

socat PTY,link=./virtual-tty,raw,echo=0 EXEC:simulator-command

Вышеупомянутое соединение stdin / stdout simulator-command с псевдотерминалом.

Если ваш симулятор также обменивается данными через последовательный порт, то дважды используйте команду PTY:

socat PTY,link=./arduino-sim,raw,echo=0 PTY,link=./virtual-tty,raw,echo=0

Откройте симулятор arduino-sim.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы