Можно ли создать «виртуальное» последовательное устройство, которое отправляет данные через «виртуальный» последовательный порт? Мне нужно разработать код для взаимодействия с Arduino, но у меня его нет. Можно ли это сделать с Сокат, или некоторый код, который пишет в dev/ttyXXX
файл?
РЕДАКТИРОВАТЬ: я использую Arch Linux
Да, вы можете использовать socat для симуляции последовательного порта.
Вам нужно использовать тип адреса PTY для socat:
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-терминал. link
опция создает программную ссылку между псевдо-терминалом и данным файлом.
Вы можете выбрать любое имя файла. Без софт-линка вам понадобится
откройте устройство, и трудно определить правильное. raw
переводит псевдо-терминал в сырой режим. Вы обычно хотите это, как вы не хотите
любой из специальных вариантов обработки терминала. echo=0
отключает режим эха.
Если у вас есть (или вы создаете) приложение, которое имитирует код, выполняющийся на
Arduino, вы также можете подключить его через socat. Если ваш симулятор
соединяется через stdin / stdout, затем используйте следующую команду:
socat PTY,link=./virtual-tty,raw,echo=0 EXEC:simulator-command
Вышеуказанное связывает стандартный вывод / стандартный вывод simulator-command
к
псевдо-терминал.
Если ваш симулятор также соединяется через последовательный порт, используйте PTY.
команда дважды:
socat PTY,link=./arduino-sim,raw,echo=0 PTY,link=./virtual-tty,raw,echo=0
Ваш симулятор открыт arduino-sim
,
Других решений пока нет …