VC++的串口通信服务设计与实现
以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘要随着计算机技术的发展和推广,利用串口进行数据通讯在通讯领域中占有着重要的地位。为了方便和快速的通过Internet网络访问串口服务器的串口,本课题把串口通信集成到Windows服务,由Windows服务完成串口通信的基本操作。文中详细描述了串口通信服务的原理和工作流程,还列举出了相关的核心代码。用流程图的方式来描述了各个模块的逻辑实现。串口通信服务中采用安全队列的机制来控制多线程访问多串口。在开发中按照软件工程的流程,从需求分析到概要设计,从详细设计到编码,以及最后的测试,利用软件工程的工具管理开发代码和文档。此外,还开发出了客户端来测试该服务工作是否正常。经过测试服务工作正常,能通过网络连接到服务器完成串口的通信。最后总结了开发和设计的不足之处,程序还有待进一步完善。关键词:串口通信;Windows服务;安全队列;多线程1 引言1.1 课题背景计算机与外界的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度慢。串行通信的距离可以从几米到几千米。1.2 研究现状串口通讯目前流行的方法大概有三种:一是利用Microsoft提供的CMSCOMM控件进行通讯,不过现在很多程序员都觉应该放弃这种方式。二是利用WINAPI函数进行编程,这种编程的难度高,要求掌握很多的API函数。三是利用现在网络上面提供的一些串口通讯控件进行编写。这三种方法都没有同Windows服务联系起来。1.3 研究的意义利用串口进行数据通讯在通讯领域中占有着重要的地位,串口通讯在通讯软件中有着十分广泛的应用。如电话、传真、视频和各种控制等。通过本文的研究和开发能更加方便的通过网络通信来实现串口通信,提高串口的利用率。为进一步的研究提供参考。2 相关理论基础2.1 Windows NT 服务有那么一类应用程序,是能够为各种用户(包括本地用户和远程用户)所用的,拥有用户授权级进行管理的能力,并且不论用户是否物理的与正在运行该应用程序的计算机相连都能正常执行,这就是所谓的服务了。每个操作系统都需要有在后台执行任务的方法,无论是谁正在使用这部机器,这些任务都可以继续运行,后台任务可以处理各种重要的服务,包括系统的或者用户的。3 需求分析及设计方案3.1 功能需求3.1.1 服务器端串口服务器上的串口通信服务打开一个固定的端口,监听客户端的Socket连接。若检测到客户端的连接则为客户端分配一个串口,供客户端发送数据。客户端同服务器协商好串口的配置信息,则客户端发送的数据服务器直接发送到串口,通过串口发送除去。若服务器检测到串口接受到数据,者直接把接收到的数据发送到客户端。即服务器中转串口和客户端的数据。这样一来客户端就好像直接链接到串口服务器上的串口,与服务器串口相连接的外设进行通信。串口服务器具有很多个串口形成一个串口池。串口池中的串口连接着不通或相同的外设,客户通过Internet联网的方式链接到服务器,同服务器的外设通信。3.1.2 串口通信串口通信服务管理整个串口池。服务程序对串口池进行合理管理和分配,服务器端接收到客户端的连接请求,服务器会从串口池中选取一个串口供客户端使用。当客户端通信完毕,断开同服务器的链接时,服务器端回收这个串口,以供其他客户端使用。在分配串口的时候不能让不同用户使用同一串口,让每一个客户端独立的使用某一个串口。当客户端链接上服务器后,服务器为客户端分配一个串口供客户端使用。这时候串口通信需要被实现。包括串口的打开,串口参数设置,读写数据到串口以及关闭串口。3.1.3 客户端客户端的需求相对简单。连接服务器的客户端通过指定服务器地址和端口号连接到服务器,设置串口的通信参数,同服务器通信。可以发送数据到服务器和接受服务器发送回来的数据,并显示接收到的数据。通信完毕时断开通服务器的连接。3.2 设计方案3.2.1 服务器端服务器端使用Windows NT服务来提供服务,此服务监听某一端口,等待客户端的链接。为客户端提供服务。使用Windows API自己定义服务的行为。服务管理串口池,服务启动初始化时,检测服务器的串口,串口统一进入一个全局安全队列。当客户端发起连接请求时,服务器开启一个线程来处理该客户的请求,直到客户端断开连接,线程退出执行。在线程中,从安全队列的队头出队列一个串口,该串口分配给该客户使用,客户端首先设置该串口的通信参数,否则按照默认串口通信参数进行通信。如果有多个客户同时连接服务器则服务器同时开启多个线程来处理多个用户的连接请求。分配给客户端使用的串口接收外设发来数据时,服务器通过连接的Socket发送到客户端,客户端处理接收到的数据。服务器端接收到客户端发来的数据时,把接收到的数据发送到分配给这个客户端的串口,通过串口发送到外设,外设处理接收到的数据从而做出反应,完成通信。3.2.2 串口通信使用Windows API的串口操作函数,封装成串口类,来处理串口通信。此串口类统一操作串口池里的串口,根据不同的串口号来操作这些串口。从而达到每一个客户的使用一个串口,每个串口都是相同的操作。可以根据不同的通信设备为不同的串口设置不同的通信参数。串口通信负责处理串口的参数设置,串口的打开和关闭,数据的读和写,即写数据到串口和从串口读数据。打开串口时,服务处理此客户的线程开启另一线程监听串口是否有数据接收,当发现有数据来的时候,串口读出该数据通过Socket发送到客户端。3.2.3 客户端客户端使用MFC编程创建基于对话框的应用程序。该程序使用Windows Socket建立同指定服务器的数据连接。当建立好HTTP链接后,可设置串口的通信参数,如:波特率,数据位,奇偶校验,停止位等。设置好串口的通信参数后就可以同服务器分配给的串口链接的外设通信了。发送数据到服务器的串口,和接收服务器发送回来的数据。3.2.4 开发工具Microsoft Visual C++ 6.0是微软公司推出的开发Win32应用程序(Windows 95/98/2000/XP/NT)的、面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。4 具体设计流程与实现4.1 安全队列数据保护是在使用多线程技术时必须要解决的关键问题,防止多个线程同时操作某一变量,导致逻辑错误,是多线程协调运行的重要内容。线程安全队列这种数据保护机可以保护共享数据,实现线程间安全的数据传输。一般地,每个进程中的线程都不知道进程中的其他线程的任何情况,除非我们在程序中明确的使他们互相可见。为了在不同时刻访问共享的资源,任何共享这些资源的线程都必须通过进程通信的手段进行调度。线程调度是一个复杂的问题,不正确的调度将导致进程的死锁。为了这种情况的发生,访问共享资源的线程必须进行同步。
包含资料:
[来源:http://think58.com]
源程序+论文(15000字以上)+可执行程序+答辩稿ppt+开题报告+外文翻译
获取资料请您联系本站客服
[来源:http://www.think58.com]