开篇:润墨网以专业的文秘视角,为您筛选了一篇网口虚拟串口通信技术的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:串口通信是目前较常见的一种通信方式,为了实现串口设备的网络通信功能,该文介绍了UMDF驱动模式、TCP/IP工作模式、虚拟串口通信及Socket通信等相关技术,详细介绍了创建虚拟串口驱动和串口与网口通信的三种工作模式的工作原理及设计过程,最后通过测试实现了虚拟串口通信。由于是通过程序设计实现,不需要对设备进行改装或是添加新设备,极大地简化了工作和降低了硬件成本。
关键词:虚拟串口;Socket通信;TCP/IP模式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)14-3245-08
串行通信是目前广泛存在的一种通信方式,很多计算机外设是通过串行接口连接的。但通过串口设备联网时,其通信的传输速度低,影响通信效率;为了使串口设备更好地实现联网功能,目前新产品设备通信接口转换的方式实现了联网功能,但是仍有一些旧设备不具备接口转换功能,而是借助硬件设备联网,如MOXA公司的串口设备联网服务器,但是通过硬件方式实现联网会增加硬件成本,具有一定的局限性。因此通过程序设计方式,即在本机虚拟出一个和真实串口一样的虚拟串口设备来实现联网通信,操作方便且降低了成本。
1 课题关键技术
1.1 基于UMDF驱动模式
大多数的驱动程序都是运行在Microsoft Windows 内核模式下的,应用内核模式来完成系统地址空间和内部结构的访问。但是内核驱动程序会影响系统的运行,内核程序受到损害会直接影响系统的运行甚至导致机器的瘫痪。为此,从Vista开始,微软推出基于用户的UMDF(User-Mode Driver Framework)驱动模式。基于用户模式的驱动程序,它只是访问用户地址空间,和内核模式驱动程序相比,用户模式驱动具有更好的安全性与稳定性,不会像内核模式驱动一样因为驱动有问题而造成系统崩溃。
1.2 TCP/IP工作模式
由于串口协议不具有网络层和传输层,所以串口转网口的通信,实际是将串口数据作为TCP/IP的应用层数据,用TCP封装传输的方式。由于TCP/IP协议的传输层包含了TCP协议和UDP协议,而TCP协议具有客户端和服务端两种工作模式,所以串口转网口通信的工作模式可以分为:TCP服务器端模式(TCP Server)、TCP客户端模式(TCP Client)和UDP模式三种。
TCP模式:TCP模式采用数据可靠传输机制,所以可以保证数据基本不误码、不丢失。在TCP通信中,必须由通信两端构成,即一方为TCP客户端,另一方为TCP服务端。此种模式类似于打电话机制,打电话的人是TCP客户端,而接电话的是TCP服务端。
1.3 虚拟串口通信
目前在Windows下,较常用的串口通信编程方法主要有:
1)利用MSComm控件编程
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件, 它为应用程序提供了通过串行接口收发数据的简便方法。MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。
具体的来说,MSComm控件提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
2)利用CSerialPort类
CSerialPort类是由Remon Spekreijse提供的免费串口类,它支持线连接的串口编程操作。与MSComm控件相比,这个类打包时,不需要加入其他的文件,而且函数都是开放透明的,允许改造。
3)Windows API串口编程
Windows API是所有Windows应用程序的根本。API是一系列的例程,应用程序通过调用这些例程来请求操作系统完成一些低级服务。在Windows这样的图形用户界面中,应用程序的窗口、图标、菜单和对话框等就是由API来管理和维护的。
1.4 Socket通信
Socket套接字是网络上服务器端与客户机端之间进行双向通信双方,可以发送或接受连接请求,Socket将通信双方一端写入的信息发送至另一端的Socket中,利用Socket套接字可以方便地进行数据的传输。
1)客户端应用程序流程
打开一通信通道(申请套接字),并连接到指定主机上某一特定地址,向服务器发出请求报文,等待接收应答。
给服务进程发送服务请求报文并接收应答,只要需要就一直做这一步。
关闭通信通道并终止。
2)服务器方应用程序流程
打开一通信通道并告知本地主机愿意在某一地址上接收客户请求。接收到请求后,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求。一旦完成,关闭新进程与客户的通信链路。
对于重复服务,处理该请求并发送应答信息;对于并发服务,要激活一新进程来处理此客户请求。当完成任务后,此新进程关闭与客户的通信链路并终止。
返回到第2步,继续等待客户机请求。
2 系统设计
在系统,不仅可以创建任意虚拟串口,与网口建立映射,而且可以修改串口和删除串口;除此之外,本系统应用程序可以选择TCP或UDP模式进行通信,操作简单,功能全面。
1)模块功能
该模块要实现的功能有:
创建连接(创建虚拟串口):选择创建的虚拟串口,输入监听的IP地址和端口,即可实现串口与客户端连接并通信;
修改连接(修改虚拟串口):修改连接监听的IP和端口;串口与新指定的IP客户端连接并通信;
删除连接(删除虚拟串口):包括删除虚拟串口,串口无法与客户端连接通信。
2)工作原理
4 总结
经过调试,可以在本机创建多个和真实串口一样的虚拟串口设备,将TCP/IP连接映射为本机的虚拟串口,实现了与远端指定的端口进行连接通信,从而实现了本机对远端设备的监控和数据传输。由于是通过程序设计实现,不需要对设备进行改装或是添加新设备,极大地简化了工作和降低了硬件成本。
本课题设计的虚拟串口程序还有以下特点:
1)可以添加多个虚拟串口;
2)可以实现TCP/IP三种工作模式的通信;
3)可以随时启动或关闭虚拟串口映射
由于作者水平有限,在设计中还有很多不完善的地方,如目前设计平台是基于Windows的,未能实现跨平台的运行,今后会在这一方向继续探索和学习,争取更进一步完善程序。
参考文献:
[1] 陆云龙,雷志华.基于Windows服务的网口与串口通信设计及应用[J].科学技术与工程,2008,8(17):5075-5079.
[2] 毛战军.利用Windows API函数自由地操作注册表[J].福建电脑,2011(7):164-165.
[3] 邢子羽,辛奇.串口通信与网络通信的应用研究[J].电脑知识与技术,2010(6):6196-6197.
[4] 宋素荣.基于TCP的Java Socket通信技术[J].科技创新导报,2012(13):54-55.
[5] 武安河.Windows 设备驱动程序 WDF 开发[M].北京:电子工业出版,2009:4-30.
[6] 龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004.
[7] 张佩,马勇,董鉴源.竹林蹊径:深入浅出Windows驱动开发[M].北京:电子工业出版社,2012.