李小龙 朱海霞 赵凯熠 赵晨翔 董正琪
摘 要:文章设计了一种无线传输的虚拟串口系统,采用Windows驱动+上位机软件+下位机终端的方式,实现了PC与下位机的高速数据传输。电脑通过虚拟出的串口控制下位机完成包括但不限于UART、SPI、IIC总线、显示屏以及各种外设。
关键词:虚拟串口;ESP32;WiFi
0 引言
传统的电磁信号传输是利用实体串口接收和发送信息,PC的核心是一个高速的中央处理器,它并没有集成UART之类的低速通信接口。实际开发时,通过USB/PCI-E总线连接MCU,或者USB转TTL线材,这些需要写操作系统与MCU的通信协议。这类传统的实体串口开发不仅需要大量的财力物力,而且在这样长的数据交换链中数据极易丢失。
本项目研究目的就是通过无线和虚拟硬件技术,在PC操作系统中虚拟出串口,并通过无线技术与下位机通信,实现操作系统直接控制下位机的无线串口。
1 虚拟串口的意义
在传统的测控系统中,通常电信号传输信息,这种传输方式常常会带来电磁干扰和信号衰减。利用电磁信号,脱离物理连接就可以克服电信号传输带来的电磁干扰和信号衰减,同时也避免了错综复杂的线路连接,有效地节省人力物力。
本文以串口为起点,对无线传输协议,传输硬件选择,传输中数据的压缩和复原,数据的加密,Windows底层驱动等进行研究,试图在PC设备上虚拟出一个无线的串口,并在此基础上虚拟SPI,IIC,CAN,SDIO等总线,提供PC与单片机的无线通信方式。图1为虚拟串口与实体串口的数据链,图中能直观看出实体串口数据链臃长、不安全。
2 系统总体设计
本项目是基于ESP32且具有上位机的通信软件,上位机驱动程序与下位机解析控制的从控制器设计。上位机部分用QT实现文本编辑,数据可视化与通信;驱动程序部分负责将文本数据转化为无线信号转发给下位机,同时接收下位机的反馈;下位机用ESP32解析指令并运行,同时反馈状态。
3 上位机软件开发
上位机采用QT开发,软件分为3个部分。第一部分是数据传输的底层,包括TCP/UDP的套接字和Qt5封装的串口类,负责数据的传输与接收;第二部分是数据的编辑部分,负责显示数据,同时编辑数据,支持语法高亮等特性;第三部分是可视化界面,包括数据波形显示器以及图片显示器等,保留给开发人员,便于下位机的数据分析。本项目开发的上位机软件界面如图2所示。
4 驱动开发
这一部分主要負责将串口与TCP/UDP之间的数据转发。采用Microsoft Visual Studio(WDK)开发。本项目开发的Windows驱动界面如图3所示。
5 下位机开发
下位机采用ESP32开发,ESP32两个240m的核心,核心0用来执行各种指令,核心1用来处理WiFi通信,解析指令,运行中断。为了避免数据错误,系统采用freertos的开发,充分利用了互斥量、定时器和中断管理。本次开发采用VScode(PIO)。下位机主函数部分如图4所示,负责初始化各个模块并启动各个线程。
6 字符串解析函数
传统的脚本语言继承了自然数计算等功能,造成系统解算时间很长。
字符串解析分成两个部分,一个是用用户自定义函数,另一个是系统的自动解析回调。得益于双核结构,用户可以充分利用其中一个核心完成用户的任务,而不影响我们的字串穿解析。
字符串解析的核心是int sscanf(const char *, const char*, ...);所以函数继承c语言的一切特性,包括正则表达式。
受限于各种编译器和优化,不同平台编译出来的代码可能有所差异。最终采用了c++来编译我们的文件。当然,具体的系统中改用c语言+结构体指针能有更好的执行效率。
#define debugLen 50
int DebugConut=0;
7 结语
本项目研究的目的就是通过无线和虚拟硬件技术,在PC操作系统中虚拟出串口,并通过无线技术与下位机通信,实现操作系统直接控制下位机的无线串口。在串口的基础上引入IIC,SPI等总线。在最终的成品上,直接写UART/IIC/ SPI的协议,PC直接与连接在下位机的传感器通信。
[参考文献]
[1]黄丽娥.网口设备虚拟串口设备技术的设计与实现[D].广州:华南理工大学,2012.
[2]郭书军,田志鹏.基于单片Wi-Fi MCU CC3200的无线串口[J].仪器仪表用户,2016(1):24-27.
[3]杨思俊.基于VB6.0的太阳能发电基站电源的上位机软件设计[J].科技广场,2011(1):133-135.
[4]杨杨,潘洪跃.基于虚拟串口的数据采集系统的设计与实现[J].大众科技,2008(4):73-75.
(编辑 王雪芬)
Design of virtual serial port based on wireless transmission
Li Xiaolong, Zhu Haixia, Zhao Kaiyi, Zhao Chenxiang, Dong Zhengqi(NUAA Jincheng College, Nanjing 211156, China)
Abstract:This paper designs a wireless transmission virtual serial port system, which uses Windows Driver + PC + lower terminal to realize high-speed data transmission between PC and lower computer. The computer controls the lower computer through the virtual serial port, including but not limited to UART, SPI, IIC bus, display screen and various peripherals.
Key words:virtual serial port; ESP32; WiFi