由于工作中遇到硬件接口和实际情况定义不一致的情况,需要在软件上将一个TCP客户端的接口当做成串口使用,无奈之下参考虚拟串口的程序写了一个Python(version 2.6)程序,已在Ubuntu 16.04中测试通过,在此记录一下,也希望能帮助到有缘的苦命人。代码如下:
#!/usr/bin/env python
# filename : tcp_to_serial_port.py
import pty
import os
import sys
import select
import socket
def create_serialport() :
master, slave = pty.openpty()
slave_name = os.ttyname(slave)
print '\nserial port device name: ', slave_name
return master
def tcp_connect(ip, port) :
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try :
s.connect((ip, port))
print 'tcp server connected:', ip, port
except socket.error as msg :
s.close()
s = None
print msg
return s
if __name__ == '__main__' :
com = create_serialport()
net = tcp_connect(sys.argv[1], int(sys.argv[2]))
if net is None :
sys.exit(1)
while True :
rl, wl, el = select.select([com, net], [], [], 1)
for io in rl :
if io == com :
data = os.read(io, 128)
net.send(data)
else :
data = net.recv(1024)
os.write(com, data)
nimo@nimo:~/Desktop$ python tcp_to_serial_port.py 127.0.0.1 8080
serial port device name: /dev/pts/8
tcp server connected: 127.0.0.1 8080
虚拟串口程序链接: https://blog.csdn.net/wushixp/article/details/81867532