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