最近同事由于调试一款软件,需要发送数据到串口,远端的PC机具备接入串口的硬件设备,而本机不具备接入串口的硬件设备,不方便调试。于是想找一个这样的软件,把本地的串口数据通过TCP/IP连接到远端的PC机上,再发送到远端PC上的串口。类似于本地串口<--->TCP/IP<--->远端串口。
于是打算用python写一个本地串口通过TCP/IP映射到远端串口的程序。一开始就遇到一个问题:如何用python截取本地串口的数据呢?想象着就像accessport一样,可以进行串口数据流的获取,但是技术有限,实现不了。后面有了一个很好的解决方法:先用虚拟串口软件,虚拟两个互连的串口,然后软件从其中一个虚拟串口获取数据,调试的软件发送数据到与之配对的虚拟串口,就可以把这个问题解决了。于是变成调试软件使用虚拟串口1<--->虚拟串口2(与虚拟串口1配对)<--->TCP/IP<--->远端串口(实际存在的串口)。
实际上这样的软件还可以用于一些硬件设备,连接于一台电脑的串口,然后通过这样的工具,就可以被其他pc机(通过虚拟串口)使用。在测试,调试都能更加方便.
实现的时候还是使用wxglade和python配合,使用到的模块有socket,Queue,serial,thread。本机测试截图:
从com6虚拟口接受数据发送到远端的服务器,然后服务器再发送给com1,com1返回数据再发送到本地,本地的client端在发送到com6上面.