У меня есть приложение, в котором я хочу смоделировать соединение между устройством и «модемом». Устройство будет подключено к последовательному порту и через него будет общаться с программным модемом.
В целях тестирования я хочу использовать фиктивное программное устройство для проверки отправки и получения данных.
Пример кода Python
device = Device()
modem = Modem()
device.connect(modem)
device.write("Hello")
modem_reply = device.read()
Теперь в моем последнем приложении я просто передам / dev / ttyS1 или COM1 или что-либо еще для использования приложением.
Но как я могу сделать это в программном обеспечении? Я использую Linux и приложение написано на Python .
Я пытался создать FIFO (mkfifo ~/my_fifo
), и это работает, но тогда мне понадобится один FIFO для записи и один для чтения. Я хочу открыть ~/my_fake_serial_port
, прочитать и написать в него.
Я также оплатил модуль pty
, но не могу заставить его работать. Я могу получить дескриптор файла master и slave из pty.openpty()
, но попытка чтения или записи в них приводит только к IOError Bad File Descriptor
сообщению об ошибке.
Обновление
Комментарии указали мне на вопрос SO Есть ли какая-нибудь программа, подобная COM0COM, в linux? , которая использует socat
для настройки виртуального последовательного соединения.
Я использовал это так:
socat PTY,link=$HOME/COM1 PTY,link=$HOME/COM2
Остальным, спасибо, что предоставили мне ценную информацию.
Я решил принять ответ Vinay Sajips , поскольку именно к этому решению я стремился до появления предложения socat. Кажется, это работает достаточно хорошо.