串口通信与控制系统---毕业设计_第1页
串口通信与控制系统---毕业设计_第2页
串口通信与控制系统---毕业设计_第3页
串口通信与控制系统---毕业设计_第4页
串口通信与控制系统---毕业设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXX大学本科毕业设计论文题目 串口通信与控制系统 院 系: 信息工程学院 专 业: 计算机科学与技术指导教师: 学生姓名: 班 级: 计科 2008年6月毕 业 设 计 任 务 书一 题目:串口通信与控制系统二 课题来源及依据:单台的由单片机控制的磨粉机已研制成功并投入小批量生产。本设计准备进一步完善系统,用VC+编写串口通信程序及上位机监控程序,可在上位机中监视下位机的工作状况并可以直接在上位机中修改工作参数,通过通信传送给下位机,实现远程的控制。 三 本设计应达到的要求:1 用VC+完成串口通信程序的编制。2 设计图形化的监控界面。3 完成数据库的设计。4 撰写毕业设计说明书。5 英文文

2、献的阅读和翻译。四 接受任务学生: 班级:计科 姓名: 五 开始及完成日期: 自2008 3月至2008 6 月六 设计(论文)指导: 指导老师: 摘要在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。本次设计的目标在于:在VC+6.0的环境下,编写使用C+语言,SQL数据库的串口通信程序,控制由单片微机控制的磨粉机,原要求能够通过串口扩展同时监控12台机器,由于目的在于进行串口通信设计的尝试,所以这里只是针对一台单片微机进行程序设计。首先,操作人员能够对串口参数进行配置。其次,当由单片微机控制的磨粉机的工作数据由串口传到计算机时,操

3、作人员能够实时监控其工作状态,工作数据,根据情况,并能更改其工作参数。这样,就要求设计适合本程序的串口通信协议。定时接受来自串口的数据帧,磨粉机的数据大致可以分为三类,此处在数据帧中使用AX,BX,CX来对数据分类。按照通信协议接受,发送数据,并有一定的数据帧查错能力。另外,在安全性方面,需要一定的保障。这里采用了简单保密功能,操作人员能够输入密码,更改原有的密码,这里的密码功能实现比较简单,有很大的改进空间,可以使用复杂的算法确保更高要求的保密性。本次毕业设计,就使用VC+对串口进行编程,自己设计串口通信协议,进行了一些尝试,虽然能够基本完成设计要求,但是还有很多地方需要改进。 关键词:串行

4、通信、VC+6.0、Win API、MFC32位程序AbstractIn laboratory with industry apply, common is widely used as the passage of correspondence between computer and equipment because serial communication is an easy way of usage. This project is aimed at designing a serial communication program under VC+6.0 environment,

5、 using C+ language and SQL database, to control the flour mill under control of SCM. It is planned to concurrently monitor 12 machines via serial expansion, because the destination is only an attempt at serial communication programming, this program is aimed at solo SCM.First, operator can configure

6、 serial parameters.Second, operator can monitor the status while the data is transferred from the flour mill to computer via serial port, and can rejigger the parameters.So that it is necessary to design a serial communication protocol suitable for this program. Receiving data frame sent from serial

7、 port occasionally, as data from SCM can be divided into 3 species, sorted by AX, BX, CX in data frame. ending and receiving data according to communication protocol, and has the checkout function as well.Furthermore, for security reasons, guarantee is needed. This program is entitled basic function

8、 for secrecy. Operators can enter the password and rejigger it. The function for secrecy is relatively simple, can be further improved, using more complex arithmetic to actualize more strict secrecy.In all,this graduate designs, I tried using VC+ to programme serial communication with correspondence

9、 protocol of proceed designed by myself.Although my programme can basicly satisfy the request,but in fact,many places need to prove.KEY WORDS: SERIAL COMMUNICATION VISUAL C+Win APIWin32 Programme目录第一部分-5需求分析1.开发背景-52.功能要求-53功能实现概述-5第二部分-7开发工具概述1.Visual C+ 及MFC-72.SQL Server 2000简介-93.串口通信协议(通信模式)-9第

10、三部分-15主要程序代码及注释1BasicCom类-152MainFrame类-173CPassword类-184CChangePassword类-195.CComConfig类-206CBasicDialog类-217.CIosetting类-228CChangeSetting类-239CGroupSetting类-24第四部分-27英文文献的阅读和翻译英文-27中文-33第五部分-35 附录致谢信-35参考文献-35功能部分主要程序-36第一部分需求分析 1.开发背景计算机串口编程在通信软件中有着十分广泛的应用,如电话,传真,视频控制等。一般情况下,涉及到远程通信,自动控制的行业,通常也会

11、涉及到串口通信技术。工业控制领域(如DCS系统),经常涉及到串行通信问题。为了实现微机和单片机之间的数据交换,人们用各种不同方法实现串行通信,如DOS下采用汇编语言或C语言。但在Windows 环境下却存在一些困难和不足。在Windows操作系统已经占据统治地位的情况下(何况有些系统根本不支持DOS如Windows2000)开发Windows 环境下串行通信技术就显得日益重要。在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。计算机和单片机(如MCS-51)都具有串行通信口,可以设计相应的串口通信程序,完成二者之间的数据通信任务。实际工作中利用串口完成通信任务的时候

12、非常之多。本设计是在WINDOWS XP操作系统下,设计自己的通信协议,借助VC+6.0编程环境,使用C+,应用SQL数据库,实现串口通信,数据库调用。2.功能要求 设计适合的串口通信协议,使用SQL数据库存储数据,用VC编写程序,使得计算机能够定时从串口获得数据,按照自己的协议拆分数据,并按照信息发送到各个Dialog。再由程序将数据正确的分配给每一个控件。当操作人员看见异常的数据,或希望更改机械的工作参数时,可以通过程序把新的更改后的数据通过串口发送出去。 机械常用的整组数据存放入数据库中,操作人员可以更改数据表,并同时将新数据发送。 3功能实现概述首先,由功能需求表分析出程序的总体设计方

13、案。整个程序可以分为三块:(1)界面设计,程序整体框架组建的前台VC块。(2)串口通信协议设计,通信功能函数编制的底层通信块。(3)常用数据表更改,存储的后台SQL数据库块。关于VC块,程序使用了比较常用的SDI风格,由MainFrm实现数据的处理,分配,存储及发送。之所以由MainFrm掌握数据处理,发送,存储,计算等功能,是因为这样不但大大简化了程序代码的量,而且较纯OOP更能减少程序复杂度,降低程序错误发生的概率,修改代码的难度。关于通信块,是本程序的重点。首先,要设计适合本程序的通信协议,定时接受来自串口的数据帧,由于磨面单片机的功能大致可以分为三个方面,此处在数据帧中使用AX,BX,

14、CX来对接收,发送的数据进行分类。按照通信协议接受,发送数据,并有一定的数据帧查错能力。要有完整的通信协议框架。要设计适合本程序的帧,并有一定的安全校验功能。其次,就是以C+语言编写的底层通信类,此类通过WINDOWS与计算机硬件建立基本控制功能,然后在这基础上,编写自己的符合功能要求(比如数据帧的拆分,解释,组建等)的功能类。再次,就是数据发送,由于数据小,总量也不大,为了提高效率,这里的处理是先将数据存入每个表对应的txt文件,再一次性将组中的数据按照协议从操作人员选定的端口,采用指定的参数全发送到串口。 关于SQL数据库块,按照需求分析得结论,在SQL数据库中添加4张工作组表,一张机械时

15、间表,一张原料比例表。程序能够自由的调用存储在SQL中的表,并能够有添加,删除,更改数据的功能。 其次,由于现代软件强调数据保密,控制权限的有界性,所以初步尝试制作了密码的设定,更改功能。(这里是把用户的新密码保存在一个TXT文件中,可以加入算法进行改进)。 综上所述,经过考虑,决定本程序采用一个文档(Document)对应一个视图(View)的SDI界面,从左到右依次有输入密码(Password)以及更改密码(Change Password)的No.0菜单,串口参数设置(ComConfig)的No.1菜单,主要对话框的No.2菜单,更改参数组(Group1-4),时间组(TimeTable)

16、的No.3菜单,以及About对话框的No.4菜单。第二部分开发工具概述1.Visual C+ 及MFC MFC库和Visual C+提供了可以用于创建各种应用程序的环境。 Visual C+可以帮助您开发满足各种商业需求的应用程序。它提供了各种功能和工具。Visual C+特色包括: (1).本机COM支持 可视化的COM编辑,与位置和语言无关的COM浏览,MFC模板,以及编译器支持简化了基于组件的开发。 (2).Visual Schema Disigner 通过从桌面远程分析Microsoft SQL Server数据库的模式(Schema),提高了数据库应用程序开发的效率。 (3).Mi

17、crosoft Transaction Server Microsoft Transaction Server帮助您建立高性能的基于事务的应用程序。 (4).活动文档服务器支持 Visual C+提供了创建活动文档服务器的向导和可编程支持,这些活动文档服务器可以在任何活动文档服务器中调用,如在Microsoft Office97和Microsoft Internet Explorer 4.0中。 Visual C+的开发环境包括: (1).帮助管理您的工程的工程工作区。 (2).编译工程的工具。 (3).设计用户界面和创建资源的编译器。 (4).共享的开发组件,包括一个优化的编译器,一个增量链

18、接器和一个集成的调试器。Visual C+有三个版本: 标准版,除了代码优化,性能分析器(Profiler)和与MFC库的静态链接外,标准版包含了专业版的所有其它功能。 专业版,使您能够开发和发布商用等级的软件产品。其功能包括VFC,Active Template Library(ATL,活动模板库),COM和OLE DB。 企业版提供了建立和验证企业级COM应用程序的工具和组件。该版本中包含专业版中的所有功能,另外还包括Microsoft Transaction Server,SQL编辑器和调试器,Microsoft Visual SourceSafe,以及对ActiveX对象(ADO)和远

19、程数据对象(RDO)的支持。MFC库的功能:MFC库是基于C+类的一个集合和一个应用程序框架,主要用于创建Microsoft Windows应用程序。这个类的集合将C+语言扩展为包括创建基于Windows的应用程序所需要的大部分基本结构元素。应用程序框架则定义了应用程序的结构,并为应用程序处理许多常规任务。 MFC库是基于Win32应用程序编程接口(API)之上而建立的。该API是操作系统为应用程序提供的一系列函数。MFC展示了代表Windows操作系统的通用对象的基本类。 MFC并不封装或包括整个API.它只包括主要的结构组件和常用组件。由于MFC是用C+编写的,因此,您可以很容易地使用Wi

20、n32 API对操作系统进行本机调用。使用MFC的益处: MFC库使您能够利用专业的Windows开发人员的成果。MFC缩短了开发时间,使代码更简洁,在不降低编程自由度和灵活性的前提下提供支持,并提供了对难于编程的用户界面元素和技术(如ActiveX和Internet编程)的方便访问。MFC通过OLEDB模板和ADO简化数据库编程,并通过Windows Socket简化网络编程。MFC使对诸如属性表,打印预览和浮动工具栏等功能的编程变得十分简单。 在开发全功能的Windows应用程序,数据库应用程序,ActiveX控件和组件以及Internet应用程序时,MFC可提供许多优点,例如: (1).

21、提供一个应用程序框架,用户可在其上建立Windows应用程序。(2).兼容以前版本的可重用的C+类。 (3).行业中最大的可重用的C+源代码库。 (4).与Visual C+集成。文档/视图体系结构:MFC提供了多种类来满足范围广泛的编程需求。使用MFC编程的第一步是熟悉这些类,并学习它们在MFC层次结构中的相互关系。某些类可直接使用;其余的类可作为创建其它类的基类。学习MFC类时,将它们按类别组织是很有帮助的。一些重要的MFC类的类别包括:(1).应用程序体系结构类。(2).用户界面类。(3).数据库类。(4).Internet类。MFC编程依赖消息的传递推动整个程序的运行。2. SQL S

22、erver 2000 简介SQL Server 是一个关系数据库管理系统它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的于1988 年推出了第一个OS/2 版本在Windows NT 推出后Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了Microsoft 将SQL Server 移植到Windows NT系统上专注于开发推广SQL Server 的Windows NT 版本Sybase 则较专注于SQL Server在UNIX 操作系统上的应用在本书中介绍的是Microsoft SQL Server 以后简称为SQL Ser

23、ver或MS SQL Server SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。3.串口通信协议(通信模式)在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。依据不同的条件实现对串口的灵

24、活编程控制是我们所需要的。基本原理: 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 串口通信程序的流程如下图: 二串口信号线的接法 一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍

25、是以25芯的RS-232C为例。 主要信号线定义: 2脚:发送数据TXD; 3脚:接收数据RXD; 4脚:请求发送RTS; 5脚:清除发送CTS;6脚:数据设备就绪DSR;20脚:数据终端就绪DTR; 8脚:数据载波检测DCD; 1脚:保护地;7脚:信号地。 电气特性: 数据传输速率最大可到20K bps,最大距离仅15m. 注:看了微软的MSDN 6.0,其Windows API中关于串行通讯设备(不一定都是串口RS-232C或RS-422或RS-449)速率的设置,最大可支持到RS_256000,即256K bps! 也不知道到底是什么串行通讯设备?但不管怎样,一般主机和单片机的串口通讯大

26、多都在9600 bps,可以满足通讯需求。 接口的典型应用: 大多数计算机应用系统与智能单元之间只需使用3到5根信号线即可工作。这时,除了TXD、RXD以外,还需使用RTS、CTS、DCD、DTR、DSR等信号线。(当然,在程序中也需要对相应的信号线进行设置。) 图 最简单的RS232-C信号线接法 以上接法,在设计程序时,直接进行数据的接收和发送就可以了,不需要 对信号线的状态进行判断或设置。(如果应用的场合需要使用握手信号等,需要对相应的信号线的状态进行监测或设置。)Windows下串行通信与以往DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows

27、操作系统提供的设备驱动程序来进行数据传递。串行口在Win 32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win 32 提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。与通信设备相关的结构有COMMCONFIG ,COMMPROP,COMMTIMEOUTS,COMSTAT,DCB,MODEMDEVCAPS,MODEMSETTINGS共7个,与通信有关的Windows API函数共有26个,详细说明可参考MSDN帮助文件。以下将给出实现串行通信的三种方法: 方法一:使用VC+提供的串行通信控件MSComm 。首先,在对话框中创

28、建通信控件,若Control工具栏中缺少该控件,可通过菜单Project -> Add to Project -> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对 Windows 通讯驱动程序的 API 函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发串口事件,串口属性的值将被改变,

29、应用程序检查受到的消息属性值并作出相应的反应。方法二:在单线程中实现自定义的串口通信类 控件简单易用,但由于必须拿到对话框中使用,在一些需要在线程中实现通信的应用场合,控件的使用显得捉襟见肘。此时,若能够按不同需要定制灵活的串口通信类将弥补控件的不足。实现步骤: (1) 打开串口,获取串口资源句柄 (2)串口设置 (3)串口读写操作,一般采用编写自己的数据I/O C+函数。若对端口数据的响应时间要求较严格,可采用事件驱动I/O读写,Windows定义了9种串口通信事件,较常用的有:EV_RXCHAR: 接收到一个字节,并放入输入缓冲区。EV_RXEMPTY: 输出缓冲区中的最后一个字符发送出去

30、。 EV_RXFLAG: 接收到事件字符(DCB结构中EvtChar成员),放入输入缓冲区。 方法三: 多线程下实现串行通信 方法一,二适用于单线程通信。在很多工业控制系统中,常通过扩展串口连接多个外设,各外设发送数据的重复频率不同,要求后台实时无差错捕捉,采集,处理,记录各端口数据,这就需要在自定义的串行通信类中创建端口监视线程,以便在指定的事件发生时向相关的窗口发送通知消息。 线程的基本概念可详见VC+参考书目,Windows内部的抢先调度程序在活动的线程之间分配CPU时间,Win 32 区分两种不同类型的线程,一种是用户界面线程UI(User Interface Thread),它包含消

31、息循环或消息泵,用于处理接收到的消息;另一种是工作线程(Work Thread),它没有消息循环,用于执行后台任务。用于监视串口事件的线程即为工作线程。 多线程通信类的编写在端口的配置,连接部分与单线程通信类相同,在端口配置完毕后,最重要的是根据实际情况,建立多线程之间的同步对象,如信号灯,临界区,事件等,相关细节可参考VC+ 中的同步类。在各成员函数中完成对各串口数据的接收处理,但必须保证在下一次监测到有数据到来之前,能够完成所有的中间处理工作。否则将造成数据的捕捉错误。 多线程的实现可以使得各端口独立,准确地实现串行通信,使串口通信具有更广泛的灵活性与严格性,且充分利用了CPU时间。但在具

32、体的实时监控系统中如何协调多个线程,线程之间以何种方式实现同步也是在多线程串行通信程序实现的难点。 程序采用上述第二种方法,编写了基于Windows消息传递与串口操作的基础类,并利用此类编写适合本次毕业设计的功能类。 应用程序送过来的数据作为一个按照通信协议进行分帧,切割后为每帧加上帧头和校验和,放入内部缓冲区准备发送;在接受端,分帧的数据去掉帧头重新归到接受缓冲区流,由应用程序接收。 整个过程如下图: 数据分帧过程数据分帧,加帧头,校验和应用程序数据发送缓冲区数据重组过程分析帧,去掉帧头,校验和接收缓冲区 在发送数据前,发送方将应用程序希望发送的数据进行分帧,然后按下面的步骤进行通信。1 握

33、手a. 由发送端发SYN信号,等待反馈。b. 接收端受到SYN后发回ACK信号。c. 发送端收到ACK信号后,由发送端发出控制首帧。d. 接受端收到控制首帧,CHECKSUM错误则发RESEND信号,然后重复步骤c-d。e. 发送端收到ACK信号后,转到(2)数据传输的步骤a。f.2 数据传输a. 由发送端发送第i帧帧头,等待反馈;若发送方发现该帧是ABORT控制帧,则转到(3)断开连接的步骤a。b. 接受端收到帧头后,帧长度校验和错误则发RESEND信号,然后重复a-b。如果正确,发ACK信号。c. 若发送端收到ACK信号,则发送帧中数据和校验和。d. 接收端收到数据后,负载数据校验和错误则

34、发RESEND信号,然后重复步骤c-d.如果正确,发ACK信号。e. 若发送端收到ACK信号,则该帧数据发送成功。发送端发送SYN信号,开始下一帧的握手过程。f. 若接收端收到SYN信号,则发送ACK信号进行确认。g. 若发送端接收到ACK信号,则重复a-e步骤进行下一帧的传输。h.3 断开连接a. 发送方法送ABORT控制帧,准备结束此次通信。b. 若接收端收到ABORT帧,则发送ACK信号,准备结束此次通信。c. 若发送端收到ACK信号,则发送BYE控制信号。d. 若接收端收到BYE信号,则拆除此次连接,同时发送ACK信号。e. 发送方受到ACK信号后,拆除连接。_本程序设计思想基于帧传输

35、方式,即在向串口发送数据是一帧一帧地发送。对于上层应用(如文件传输)来说,应用程序所发送的和所接收的都是数据流,即如果应用程序需要进行上层的协议解释的话,它将面对这些流数据的重新拼装。为保证可靠的传输,在传输开始前,通过握手建立连接(类似TCP/IP),在每一帧的传输中,采用发送/应答/重连/失败方式。本程序的帧格式:12345678此处的协议规则为:头两个字节存放:ox00 ox00 : 数据帧的开头ox00 ox01 : 控制帧的开头第三,四字节:AX : 代表Basic Dialog的数据帧BX : 代表IoSetting Dialog的数据帧CX : 代表GroupSetting Di

36、alog的数据帧第五,六字节:传送的数据的内容第七,八字节:传输的数据帧的校验位在程序中,定义了FormatPack 函数,SendFile函数,Receive函数。FormatPack函数的功能是将要发送到串口的数据按照上述地帧结构进行分帧。SendFile函数的功能是将要发送到串口的数据先存入文件,确定要发送后,整体分帧,在通过串口发送。Receive函数的功能是将从串口接收到的数据分帧,得到由效的数据,并传递给程序。9101112第三部分主要程序代码及注释1BasicCom类: 此类为本程序能过实现的基础,是与接口交互的基础类(由于Windows操作系统不赞同程序对硬件的直接操控,故需要

37、编写自己的基础类)。它完成了程序绝大部分的底层工作:1.串口方面:它提供了与程序功能实现类的接口:打开串口,从串口读取数据,将读取的数据存入缓冲区,向串口写数据,将要发送的数据存入缓冲区,关闭串口。2.操作系统方面:它提供了自己对串口的消息的处理线程:打开监视串口线程,关闭监视串口线程,定时接受,发送线程,向操作系统申请了一些自己定义的消息以及处理函数(这样在操作系统的一些默认消息处理前截取并处理这些消息)。主要函数如下:初始化串口函数:BOOL CBasicCom:InitPort(CWnd* pPortOwner, UINT portnr,UINT baud, char parity,UI

38、NT databits,UINT stopbits,DWORD dwCommEvents,UINT writebuffersize)定义串口线程:UINT CBasicCom:CommThread(LPVOID pParam)其中,定义消息的传递路径::SendMessage(port->m_pOwner->m_hWnd, WM_COMM_CTS_DETECTED, (WPARAM) 0, (LPARAM) port->m_nPortNr);if (CommEvent & EV_RXFLAG):SendMessage(port->m_pOwner->m_h

39、Wnd, WM_COMM_RXFLAG_DETECTED, (WPARAM) 0, (LPARAM) port->m_nPortNr);if (CommEvent & EV_BREAK):SendMessage(port->m_pOwner->m_hWnd, WM_COMM_BREAK_DETECTED, (WPARAM) 0, (LPARAM) port->m_nPortNr);if (CommEvent & EV_ERR):SendMessage(port->m_pOwner->m_hWnd, WM_COMM_ERR_DETECTED,

40、(WPARAM) 0, (LPARAM) port->m_nPortNr);if (CommEvent & EV_RING):SendMessage(port->m_pOwner->m_hWnd, WM_COMM_RING_DETECTED, (WPARAM) 0, (LPARAM) port->m_nPortNr);定义开始监视串口的线程:BOOL CBasicCom:StartMonitoring()定义(有中断,出错,或其他情况下)重新开始监视串口线程:BOOL CBasicCom:RestartMonitoring()定义停止监视串口线程:BOOL CB

41、asicCom:StopMonitoring()定义线程出错的处理函数:void CBasicCom:ProcessErrorMessage(char* ErrorText)定义向串口写字符函数:void CBasicCom:WriteChar(CBasicCom* port)定义接受自符函数:void CBasicCom:ReceiveChar(CBasicCom* port, COMSTAT comstat)定义向端口写的函数:(参数为CString,CString.GetLength())void CBasicCom:WriteToPort(BYTE* string,int nLengt

42、h)定义接受事件的函数:DWORD CBasicCom:GetCommEvents()定义得到写缓冲区的大小的函数:DWORD CBasicCom:GetWriteBufferSize()定义向端口写的函数:(参数为CString)void CBasicCom:WriteToPort(CString str)定义读函数(参数为端口号,长度)BYTE* CBasicCom:ReadBlock(CBasicCom *port, int& readLen)2MainFrame 程序主界面 MainFrame定义并实现程序的主要功能(定义串口参数,按串口通信协议组织数据帧,拆分接受数据帧得到数

43、据,发送数据帧)。其中主要函数:发送数据帧函数:BOOL CMainFrame:SendFile(int i)-本程序中定义:CBasicDialog,i=1;CIosetting,i=2;CChangeDate,i=3;按照本程序的通信协议组织数据帧:BYTE* CMainFrame:FormatPack(BYTE* buf,int buflen,char mark2)按照本程序的通信协议拆分接受数据帧得到数据的函数:BOOL CMainFrame:ReceiveFile()3CPassword类: 密码页界面 次类负责权限的设定。操作人员通过输入正确的密码可以:1. 更改密码。2. 对串口

44、参数进行设置。3. 对从串口传输进来的数据进行监视,更改,在发送新数据。4. 对数据库的工作组,时间表,比例参数表进行更改,并通过串口发送新数据。这里采用了用CString类型的变量存储密码,并存放在TXT类型的文件中(在save 文件夹中)主要函数名及代码段为:void CComConfig:OnOK() char* pszFileName = "D:MY DOCUMENTLiquid-gengex新建文件夹ControlSystemsavepassword.txt"if ( !myFile.Open(pszFileName,CFile:modeRead, &fi

45、leException ) CArchive ar(&myFile,CArchive:load);ar>>m_password;4CChangePassword类: 更改密码界面 此类完成密码的更改,当操作人员输入正确的旧密码,新密码将以CString的类型存入本程序所在文件夹下SAVE/PASSWORD.TXT内,当存储成功,显示已经更改成功。主要的函数:主要函数名及代码段为:void CMainFrame:OnChangepass() UpdateData(TRUE); CArchive rar(&myFile,CArchive:load); rar>&g

46、t;m_password; if(bd.DoModal()=IDCANCEL) return; if(bd.m_formalpassword!=m_password) AfxMessageBox("密码错误"); return; m_password=bd.m_newpassword; AfxMessageBox("设置密码成功");5.CComConfig类: 串口参数设置界面 次类负责串口参数的基本设定。操作人员可以设定的内容为:端口号,数据传输率,数据位,校验位,停止位,发送缓冲区的大小。经过程序测试端口,返回结果。当操作人员按下OK时,程序应当按

47、照接收到的参数初始化串口,并显示初始化结果,主要函数名及代码段为:void CComConfig:OnOK() tryif(bd.InitPort(this,atoi(m_strComm)+1,atoi(m_strBaudRate),atoi(m_strParity),atoi(m_strDataBits),atoi(m_strStopBits) bd.StartMonitoring(); AfxMessageBox("com 已经打开!"); catch(CException &e) AfxMessageBox("com 口不可用,或者输入不正确!&qu

48、ot;); CDialog:OnOK();以下的CBasicDialog类,CIosetting类,CGroupSetting类,CChangeSetting类为程序主要与用户交互的类:6CBasicDialog类: 基本机械参数设置界面 此类负责显示从串口得到的基本机械参数据,操作人员如果更改了参数,新数据通过串口传送出去。当操作人员按下OK时,程序应当把新数据写入串口,并显示发送结果,主要函数名及代码段为:void CBasicDialog:OnOK() CMainFrame *frame=(CMainFrame*)GetParent();UpdateData(TRUE); CFile mFile; char* m_fileName = "D:MY DOCUMENTLiquid-gengex新建文件夹ControlSystemsave1.txt" mFile.Open(m_fileName,CFile:modeWrite|CFile:modeCreate); CArchive car(&mFile,CArchive:store); car<<str; frame->SendFile(1); mFile.Close(); CDialog:OnOK();7.CIosetting类: I/O参数设置界面此类负责显示从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论