You can proxy between any two kinds of connection pretty easily with
from twisted.internet import serialport, protocol, reactor
from twisted.protocols import portforward
# Stop the server, since only one thing can talk to the serial port
# at a time.
# Hook up the proxy between this TCP connection and the serial port.
self.peer = portforward.Proxy()
self._serialPort = serialport.SerialPort(self.peer, '/dev/ttyS0', reactor)
factory = protocol.ServerFactory()
factory.protocol = SerialPortServer
tcpPort = reactor.listenTCP(12345, factory)