Fake serial communication under Linux
- by kigurai
I have an application where I want to simulate the connection between a device and a "modem". The device will be connected to a serial port and will talk to the software modem through that.
For testing purposes I want to be able to use a mock software device to test send and receive data.
Example Python code
device = Device()
modem = Modem()
device.connect(modem)
device.write("Hello")
modem_reply = device.read()
Now, in my final app I will just pass /dev/ttyS1 or COM1 or whatever for the application to use.
But how can I do this in software? I am running Linux and application is written in Python.
I have tried making a FIFO (mkfifo ~/my_fifo) and that does work, but then I'll need one FIFO for writing and one for reading. What I want is to open ~/my_fake_serial_port and read and write to that.
I have also lpayed with the ptymodule, but can't get that to work either. I can get a master and slave file descriptor from pty.openpty() but trying to read or write to them only causes IOError Bad File Descriptor error message.