
Serial_worker: īut that's only half the solution, because you're writing to this socket in your SerialToNet class. That might look like: class NetToSerial(Thread): You need to check the value of data, and if it's empty implement your disconnect logic: Print("NetToSerial client disconnection") You're receiving data from network clients in NetToSerial, here: def run(self):Įxcept (ConnectionAbortedError, ConnectionResetError): You know a client has disconnected because you receive an empty response ( b'') from the socket. You need to implement some logic for when a network client disconnects. Wikipedia has more about ptys: How to forward serial port data to a multiclient socket server in Python? Perhaps pick one with a high number to avoid duplicates, since all your login terminals will also be using ptys. Of course you can use some number other than ptyp5.

If you really need it to talk to a file called /dev/ttys2, then simply move your old /dev/ttys2 out of the way and make a symlink from ptyp5 to ttys2. From one end, open /dev/ptyp5, and then attach your program to /dev/ttyp5 ttyp5 will act just like a serial port, but will send/receive everything it does via /dev/ptyp5. You can use a pty ("pseudo-teletype", where a serial port is a "real teletype") for this. You can also try to get to work with ser2net. Socat creates TCP connection to 192.168.254.254:8080, so that everything, that will be written to /dev/virtualcom0 will be forwarded to 192.168.254.254:8080 and vice versa.Īnother approach would be to use RFC2217 via ser2net on Linux sever side and RFC2217 driver on Windows side (for example single port version).

Create a virtual serial port connection over TCP

One side of the tcp connection needs to be listening on the port (the first one you launch), and the second side connects to it.įor the first side do: socat tcp-listen:8080 pty,link=/dev/virtualport0Īnd for the second side do: socat pty,link=/dev/virtualcom0 tcp:IP-of-other-machine:8080įorget the netcat, you do not need it.
