2017毕业论文-基于C++的无线表决系统控制端设计.doc_第1页
2017毕业论文-基于C++的无线表决系统控制端设计.doc_第2页
2017毕业论文-基于C++的无线表决系统控制端设计.doc_第3页
2017毕业论文-基于C++的无线表决系统控制端设计.doc_第4页
2017毕业论文-基于C++的无线表决系统控制端设计.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

武汉理工大学毕业设计(论文)目录摘要IAbstractII第一章 绪论11.2 无线网络技术11.2.1 无线网络技术的优点11.2.2 无线网络技术面临的一些问题21.3无线网络的应用21.4 研究无线表决系统的意义21.5 无线表决系统的现状31.6 本文的研究内容3第二章 无线表决系统控制端软件的研究12.1 无线表决系统控制端软件12.2 应用程序软件的设计12.2.1事件驱动的程序设计12.2.2消息循环与输入22.2.3 图形输出22.2.4 资源共享22.2.5结构化程序设计和面向对象的程序设计32.3 无线表决系统软件的可行性分析3第三章 无线表决系统控制端软件界面的设计43.1 软件界面介绍43.1.1 程序流程图43.1.2 软件界面53.2 windows控件73.2.1 Windows控件73.2.2 系统使用控件83.3 软件控件功能的实现93.3.1建立MFC应用程序93.3.2 windows标准控件使用103.3.3 ActiveX控件12第四章 串口通信和虚拟硬件连接134.1 串口通信的实现134.1.1 添加MSComm控件134.1.2 初始化串口134.1.3 串口的读写数据144.2 串口的虚拟硬件连接15第五章 软件各部分的关联和美化165.1 软件各部分的关联165.1.1 参数选择和显示165.1.2 开始投票和参数选择165.1.3 投票开始和数据显示175.2 软件界面的美化175.3 程序运行结果18第六章 全文总结20参考文献22致谢2324摘要随着我国社会民主化进程的不断发展,投票表决在各类会议中的应用越来多,传统的投票表决方式已不能满足现代会议快节奏、高效率、自动化的要求。而数字无线投票表决系统的出现有效的满足了这种现代会议的要求,具有重要的实用意义。本文主要通过对传统无线表决系统基本工作原理的研究,具体说明了无线表决系统各个分系统的功能以及硬件电路的实现和软件编程部分的实现。通过对现有表决系统的分析与研究,提出了比较适合当前会议要求的设计方案。文章详细的阐述了无线表决系统控制端的设计方案以及具体实现方法,该设计方案主要包括一下两个方面:程序界面的设计与实现,串口通信部分的设计与实现。在本文的前半部分主要介绍的是无线数据表决系统控制端的程序控制界面的设计与实现,主要通过Visual c+来进行程序的编写;本文的后半部分主要介绍程序功能的实现和串口通信的实现,也是使用Visual c+来进行程序的编写。文章结尾简单阐述了软件部分和无线表决系统硬件部分连接原理。关键词:Visual C+ ;MFC;串口通信;AbstractWith the development of our countrys democracy,The voting system has been used in differents conventions,now the traditional voting system can not catch up with the development of modern way.So a new voting system appeared.We called it Digital Voting System. According to some technology of the traditional voting system the new one become more prefect.The thesis tell us some detail things of the voting system control centre.The control centre are make up of UI and Serial Comunications.The whole system was build by the Visual C+ program.At the last part of the thesis there is a brief introduction about the link between the control centre and the terminal.We used the wireless technology to link the computer and the terminal.There are so many wireless technology to finish the system,such as wifi and Bluetooth. Key Words: Visual C+ ;MFC; Serial Comunications第一章 绪论1.1 引言在科技迅猛发展的今天,信息技术的飞速发展,促进了信息化社会的形成。随着信息传递的充分发展出现了超越时空的互联网技术,随着信息表示的发展出现了如声像视频这样的多媒体技术,而信息的收集、处理、加工的发展也出现了数字化手持移动技术、智能技术,如搜索技术,数据挖掘等,这一系列的新技术的出现给整个社会的运行方式带来了巨大的影响。随着我国社会民主化进程的不断发展,投票表决的方式在各类会议中的应用越来多,传统的投票表决方式已不能满足现代会议快节奏、高效率、自动化的要求。而数字无线投票表决系统的出现有效地解决了这些问题:代表们在自己的座位上就能投票决,省去了以往排队投票的步骤;即可轻松地完成从签到到各类议案的电子表决工作;在不记名模式下,系统特有的保密功能使得代表按键能最大限度地反映其真实意愿,而不用担心被人窥视或记录追查;投票系统会即时统计并在会场投影显示出投票表决结果,它从根本上改变了各类会议传统发、填、收、计票的表决方式,节省了收集统计的人工与时间、避免了人为错误的发生、节省了与会代表等待结果的时间。 1.2 无线网络技术无线网络技术是一种柔性的数据交换系统,是对局域网技术的一种延伸和补充。它通过采用无线通信技术,在计算机与计算机或有无线模块的设备之间实现无线通信,实现数据、资源的共享。管理人员不需要重新进行连线,配置网络。无线网络与普通的局域网相比有以下几个特点。1.2.1 无线网络技术的优点1、移动性无线网络可以为用户提供实时的、移动性的数据通信,这是普通的局域有线网无法企及的。由于无线网络没有了通信光缆的限制,用户可以在任何覆盖了无线信号的地点进行工作或浏览资讯,极大的方便了人们的日常生活。2、解决了布线问题传统的有线局域网存在着一个布线的问题,不同的建筑有不同的风格,在进行有线网络的安装工作的时候必须根据建筑的形式和风格进行布局。这样给网络的普及及使用带来了一定的问题,而无线网络技术几乎避免了这样一个问题,还为网络的建设节省了大量的费用。3、可靠实用性有线网络的有线是布局有一个不可克服的弊端,就是任何电缆在使用的过程中都存在着损坏或者是老化的问题,这些问题的出现必将会影响网络传输的效率,影响传输信号的强度以及传输数据的完整性。无线技术也很好的避免了通信受损的问题,在适当范围内先进的无线编码技术,先进的无线通信协议几乎可以避免受损问题的出现,具有极高的可靠性。4、易安装和低成本性无线网络技术如今已经非常成熟,无线设备生产制造的技术也已经非常的成熟,统一的标准使得无线设备以及无线网络的安装工作都变得非常的容易。1.2.2 无线网络技术面临的一些问题由于无线技术与生俱来的优势,受到了很多部门和组织的欢迎,但在实际的使用中也遇到了一些问题。1、无线电信号的问题由于无线电使用的通信技术的特点,信号在空气传播途中或多或少会受到大气噪声干扰和其他发射系统的影响。而且无线网络的使用也会受到附近其他无线网络和无线设备的干扰。发射系统的谐波或者其他使用相近无线电波段的产品,都会使无线网络受到干扰而影响通信效果。2、健康危害由于无线网络进行数据的传输的时候使用的是电磁波的形式,这其中必然有辐射的产生。虽然这样的辐射量比较小,但是长时间处于这样的电磁环境下还是会对人的身体健康造成一定的损害。1.3无线网络的应用随着社会的进步,各类数据信息的传递量飞速增长,网络的使用率也增长很快。从目前应用的情况来看,无线网络技术是对普通网络的一种延伸。它为移动办公的用户和网络之间提供实时连接的手段,现已在许多行业都取得了成功应用。1.4 研究无线表决系统的意义现在许多公司或企业都已经感受到了办公空间紧张带来的压力,尤其是在一些经济发达的大中城市,公司或企业每年都必须为办公空间支付不菲的费用。因此这些公司都在竭尽所能提高办公空间的使用效率,减少占用空间。大多数公司和企业都没有在公司内部设立大型的会议室,在已有的会议室无法满足会议规模时,就需要外出租借会议室,不仅要支付租金,同时还要浪费时间,会议组织也非常麻烦。其实基于局域网络的会议系统就完全可以解决上述问题。在使用网络会议系统后,参加会议的人员完全可以分散到各个小的会议室或者某些办公区域通过网络会议系统同时参加同一会议。不仅节省了会议场地的费用,而会议召集也可以节省时间,大大提高了会议效率。但是在会议现场,往往因为建筑没有为会议现场预留布线通道,而造成已经装修好的会议现场重新安排布线,既浪费布线时间又浪费一次装修经费。有线局域网络接口变动造成网络不能稳定运行。种种问题造成有线会议系统在实际应用时的不便。而使用无线方式的系统。将无线局域网技术用于无线会议系统可以避免有线会议系统带来的节点固定,布线困难,对建筑物的破坏等缺点,可以带来无线局域网的可移动性,布线时间短,使用方便等优点,并可以降低成本,提高工作效率,解决了有线网络线缆故障等造成的网络瘫痪问题。无线网络技术在网络会议系统中的应用还避免了网络会议系统的复杂的连线和安装过程,不仅系统安装和拆除方便,而且也大大增加了与会者的可移动性,对于一些临时会议的进行非常方便。同时对于那些还没有建设网络环境的会议室或办公室,或者铺设线缆有困难的场所,同样可以通过无线网络系统搭建无线会议系统。1.5 无线表决系统的现状在无线技术的推动下,无线表决技术也日趋成熟和完善,从原先的单一功能发展到现在的多功能智能投票系统。随着信息技术的发展无线表决器拥有了高速数据采集处理,稳定的操作系统,和更加漂亮的外观。新一代无线表决系统产品,是世界上非常豪华、精致的一个产品。目前比较好的系统可以在美国联邦通讯委员会规定的免执照许可的2.4GHz下工作,采用新的调频技术,使得系统能够提供卓越的射程,即使在恶劣的环境中,依然能保持通信信号的稳定性及保密性。与其他射频设备比如WLAN,PDA,移动电话等共存的情况下,系统仍可可靠运行,以确保数据精确度和增强安全性。无线表决系统容量也从最先的几十上百个发展到现在的支持上万个无线表决器,并且以最快速度实现数据的统计和显示。1.6 本文的研究内容本文主要通过对传统无线表决系统基本工作原理的研究,简单了解了无线表决系统各个分系统的组成部分。主要阐述了无线表决系统控制端的基本工作原理及其主要功能,通过设计方案来完成无线表决系统控制端的软件编程,文中结合实际工作需要从以下三个方面完成工作:1、无线表决系统控制端软件可行性的分析。2、无线表决系统的程序界面设计与实现。3、程序部分和硬件部分串口通信的实现。第二章 无线表决系统控制端软件的研究2.1 无线表决系统控制端软件在本系统中,表决系统控制端的程序的编制由Visual c+ 程序语言来完成。这不仅因为VC 语言简单易学、操作方便,同时具有强大的图形控件编辑功能,既提供工程设计所需的组件,又是制作友好程序交互界面的向导,而且鉴于VC 语言的特点,它还提供了丰富的数据库编辑功能,因此,Visual c+ 程序语言已经越来越成为广大程序开发人员爱不释手的设计工具,利用它,程序开发人员可以直接进入开发状态,开发出满足需求的各种应用程序。而挂与其上的MFC提供了更为简单的编程方案,MFC的主要优点是可以用面向对象的方法来调用Windows API,以及应用程序开发的便捷。MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和活动文档这样的便于自定义的应用程序框架。同时,在Visual C+内部也内建了很多对MFC的例如类向导这样的支持以减少软件开发的时间,使用类向导可以生成从hello world这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表。所以用Visual c+ 语言完成本无线表决系统控制端的控制、通信、数据处理、数据管理等功能。2.2 应用程序软件的设计所谓控制端软件就是一个基于WinAPI与C+的结合的可视化程序界面,和所有的windows应用程序一样,软件的设计必须以一定的思维方式来进行软件设计,同时遵循一定的规律可以提升软件的质量也能缩短软件的设计周期。如前所述,Windows操作系统具有MS-DOS操作系统无可比拟的优点,因而受到了广大软件开发人员的亲睐。但是,熟悉DOS环境下软件开发的程序员很快就会发现,Windows编程与DOS环境下编程相比有很大的不同。Windows要求以一种全新的思维方式进行程序设计,主要表现为以下几点:2.2.1事件驱动的程序设计传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。2.2.2消息循环与输入事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。事件驱动是靠消息循环机制来实现的。消息是一种报告有关事件发生的通知。消息类似于DOS下的用户输入,但比DOS的输入来源要广,Windows应用程序的消息来源有以下四种:1.输入消息:包括键盘和鼠标的输入。2.控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。3.系统消息:对程序化的事件或系统时钟中断作出反应。4.用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。2.2.3 图形输出Windows程序不仅在输入上与DOS程序不同,而且在程序输出上也与DOS有着很大不同,主要表现为:1.DOS程序独占整个显示屏幕,其他程序在后台等待。2.Windows程序的所有输出都是图形。3.Windows下的输出是设备无关的。Windows下的应用程序使用图形设备接口(GDI)来进行图形输出。GDI屏蔽了不同设备的差异,提供了设备无关的图形输出能力,Windows应用程序只要发出设备无关的GDI请求(如调用Rectangle画一个矩形),由GDI去完成实际的图形输出操作。对于一台具有打印矩形功能的PostScript打印机来说,GDI可能只需要将矩形数据传给驱动程序就可以了,然后由驱动程序产生PostScript命令绘制出相应的矩形;而对于一台没有矩形输出功能的点阵打印机来说,GDI可能需要将矩形转化为四条线,然后向驱动程序发出画线的指令,在打印机上输出矩形。2.2.4 资源共享对于DOS程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。而Windows是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。2.2.5结构化程序设计和面向对象的程序设计面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法结构化程序设计所不能解决的代码重用问题。结构化程序设计从系统的功能入手,按照工程的标准和严格的规范将系统分解为若干功能模块,系统是实现模块功能的函数和过程的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高。面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法,它采用对象来描述问题空间的实体。一般的认为,对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能力。它是一些属性及服务的一个封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”这一公式来表达。在Windows中,程序的基本单位不是过程和函数,而是窗口。一个窗口是一组数据的集合和处理这些数据的方法和窗口函数。从面向对象的角度来看,窗口本身就是一个对象。Windows程序的执行过程本身就是窗口和其他对象的创建、处理和消亡过程。Windows中的消息的发送可以理解为一个窗口对象向别的窗口对象请求对象的服务过程。因此,用面向对象方法来进行Windows程序的设计与开发是极其方便的和自然的。2.3 无线表决系统软件的可行性分析综上所述,在了解了Windows应用程序设计的一般思维方法及基本设计流程之后,对无线表决系统软件的设计有了一个大体的框架构想。对比设计方案之中的控制端的软件功能以及软件界面的设计方案,删除了部分不符合Windows应用程序要求的一些功能模块,增加了在设计方案中不包含且拥有更高质量的功能模块。最终可以实现应用程序的编写。第三章 无线表决系统控制端软件界面的设计3.1 软件界面介绍开始3.1.1 程序流程图成功失败否否是是结束投票结束程序主页面结束投票统计显示投票结果统计投票显示结果投票开始投票开始错误正确正确错误多人投票模式选择参数选择参数单人投票模式投票模式连接图1 程序流程图3.1.2 软件界面无线表决系统控制端软件同所有的windows应用程序一样采用交互式可视化窗口的形式,拥有友好的操作界面,给予操作人员良好的操作体验。控制端软件共提供了三个相互联系的软件界面,分别为如下三个界面:1、主界面该程序界面为控制端应用程序的第一个窗口界面,是整个软件的控制中心。该界面提供了表决模式选择、串口连接测试、打开和关闭串口等功能,是整个应用程序运行时的出发点,如图-2所示:图2 主界面图2、单人投票模式在主程序界面选择了单人投票模式后,程序跳转到单人模式界面运行。单人投票模式分为三个模块:参数选择和数据显示区、操作功能区、数据存储和读取区。参数选择和数据显示区主要功能时给操作员提供一个选择投票参数的界面,如参加选举的的对象的号码等属性,数据显示区则是显示手持端设备发送回来的数据结果的实时显示。操作功能区提供在单人投票模式下可以实现的各种功能,如开始投票、暂停投票、结束投票、清除参数选择和数据显示区的数据。数据存储和读取区的功能主要是完成对投票统计结果的存储和读取。单人投票模式程序界面如图-3所示:图3 单人投票模式界面图3、多人投票模式多人投票模式和单人投票模式基本相同也由三个不同的模块构成,功能基本相同,主要不同的部分主要集中在参数选择和数据的显示区域。单人投票模式选择的参数主要只是针对单个对象,而多人投票模式针对的就是多个对象,所以在参数选择的区域就出现了两个界面的差异。多人投票模式的程序界面如图-4所示:图4 多人投票模式界面图3.2 windows控件3.2.1 Windows控件1、windows标准控件Windows标准控件由Windows操作系统提供,在Windows 95中还提供了一些新增的控件。所有这些控件对象都是可编程的,我们可以使用Visual C+提供的对话框编辑器把它们添加到对话框中。Microsoft基础类库(MFC)提供了封装这些控件的类,它们列于表3.1。表3.1 windows标准控件控件MFC类描述动画CAnimateCtrl显示连续的AVI视频剪辑按钮CButton用来产生某种行为的按钮,以及复选框、单选钮和组框组合框CComboBox编辑框和列表框的组合编辑框CEdit用于键入文本标题头CHeaderCtrl位于某一行文本之上的按钮,可用来控制显示文件的宽度热键CHotKeyCtrl用于通过按下某一组合键来很快的执行某些常用的操作图象列表CImageList一系列图象(典型情况下是一系列图标或位图)的集合。图象列表本身不是一种控件,它常常是和其它控件一起工作,为其它控件提供所用的图象列表列表CListCtrl显示文本及其图标列表的窗口列表框CListBox包括一系列字符串的列表进度CProgressCtrl用于在一较长操作中提示用户所完成的进度多格式文本编辑CRichEditCtrl提供可设置字符和段落格式的文本编辑的窗口滚动条CScrollBar为对话框提供控件形式的滚动条滑块CSliderCtrl包括一个有可选标记的滑块的窗口旋转按钮CSpinButtonCtrl提供一对可用于增减某个值的箭头静态文本CStatic常用于为其它控件提供标签状态条CStatusBarCtrl用于显示状态信息的窗口,同MFC类CStatusBar类似控件MFC类描述选项卡CTabCtrl在选项卡对话框或属性页中提供具有类似笔记本中使用的分隔标签的外观的选项卡工具条CToolBarCtrl具有一系列命令生成按钮的窗口,同MFC类CToolBar类似工具提示CToolTipCtrl一个小的弹出式窗口,用于提供对工具条按钮或其它控件功能的简单描述树CTreeCtrl用于显示一系列的项的继承结构2、ActiveX控件ActiveX控件可用于对话框中,也可用于HTML文档中。这种控件过去被称为OLE控件。本书将在专门的章节中来讲述关于ActiveX控件的知识。这里仅指出ActiveX控件使用了与标准控件完全不同的接口和实现方法。3、其它MFC控件类除了Windows标准控件和自己编写的或者来自于第三方软件开发商的ActiveX控件以外,MFC还提供了另外三种控件,它们由下面的三个类进行封装:(1) 类CBitmapButton用于创建以位图作为标签的按钮,位图按钮最多可以包括四个位图图片,分别代表按钮的四种不同状态。(2) 类CCheckListBox用于创建选择列表框,这种列表框中的每一项前面有一个复选框,以决定该项是否被选中。 (3) 类CDragListBox用于创建一种特殊的列表框,这种列表框允许用户移动列表项。 3.2.2 系统使用控件在前面的章节中我们提到,控件是一些行为标准化了的窗口,一般用于对话框或其它窗口中充当与用户交互的元素。本系统控制端软件是一个的交互式窗口软件,windows控件给我们提供了丰富的控件资源来实现软件的功能,鉴于本软件相对叫简单,所以只是用了windows控件中的几个比较常用的控件:1、CButton按钮控件 产生某种行为的按钮,以及复选框、单选钮和组框。2、CComboBox组合框控件 在控制端软件界面的参数选择区提供表决参数的选择功能。3、CEdit编辑框 提供数据的输入和显示,在控制端软件界面中只提供数据的中转和显示。4、CStatic 静态文本框 提供数据的显示功能及相关控件的功能说明。5、MSComm控件 Visual C+为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。鉴于本系统软件的实际功能需求,我们只使用了以上功能的控件,只是windows控件的一部分,各个控件的详细功能我们将在下节分析。3.3 软件控件功能的实现3.3.1建立MFC应用程序打开VC应用程序,在“文件”菜单中选择“新建”命令,在弹出的新建对话框中选择“工程”标签,然后选中“MFC AppWizard(exe)”,再在对话框的右侧输出工程名,选择工程存放的位置。如图5所示:图5 创建MFC工程应用程序的类型有“单文档”、“多文档”、“基本对话框”三种,根据我们的实际需要我们选择“基本对话框”类型,得到如图-6所示的界面:图6 MFC基本对话框界面在完成了以上步骤后可以开始自己程序的界面设计,选择自己需要的控件按钮放置以基本对话框上。3.3.2 windows标准控件使用1.按钮控件按钮控件是在本软件中使用最多的一种控件,贯穿于整个程序之中。在控制端软件的三个界面中多大量的使用按钮控件,鉴于不同按钮的功能不同,主要从以下两个方面来了解按钮控件的使用。(1) 通过按钮在主界面和两个分界面之间进行联系 在主页面中有两个选择投票模式的按钮“单人投票模式”和“多人投票模式”,为了实现在单击相关按钮时程序界面自动弹至选择的界面,我们分别给两个按钮添加变量m_button1和m_button2(m_button1为“单人投票模式”按钮的变量名m_button2为“多人投票模式”按钮的变量名),将两个变量的类型改为CButton类型。在Message maps选项卡下的message选项卡下选择BN_CLICKED类型,这个消息响应的意思是在单击该按钮的时候响应该按钮的相关代码,其代码为:单人投票模式按钮下代码为:ShellExecute(NULL,open,F:/Program Files/Microsoft Visual Studio/MyProjects/单人模式/单人投票模式/Debug/单人投票模式.exe,NULL,NULL,SW_SHOWNORMAL);多人投票模式按钮下代码为:ShellExecute(NULL,open,F:/Program Files/Microsoft Visual Studio/MyProjects/多人模式/多人投票模式/Debug/多人投票模式.exe,NULL,NULL,SW_SHOWNORMAL);这样在两个按钮的消息响应函数中加入以上两条代码则实现了程序从主界面像两个分界面的跳转。(2)其他功能按钮我们知道按钮的点击方式分为单击和双击两种方式,而两种方式的实现主要是在于message选择的类型,如果选择的类型是BN_CLICKED那么点击方式就是单击,如果选择的类型是BN_DOUBLECLICKED那么点击的方式就是双击,在本软件系统中我们的按钮全部使用单击的方式来实现功能。主界面中其他功能的按钮主要有“打开串口”,“关闭串口”,“连接测试”和“about”如图-7所示:图7 其他功能按钮 如同选择投票模式按钮一样,在主界面绘出了这些按钮的图形之后我们逐一给这些按钮添加成员变量,为了方便记忆和管理我们赋予其具有特殊意义的变量名,如在为“打开串口”按钮命名变量名时可以使用m_openCK作为变量名,既简单又明了。接下来就是添加各个按钮的消息响应代码,“打开串口”,“关闭串口”,“连接测试”三个按钮的消息响应代码涉及到串口通信的MSComm控件在下一章详细分析。“about”按钮是一个关于本软件的阐述,我们使用简单的弹窗口的模式呈现,在这里使用的是Messagebox()这个函数来实现代码如下:MessageBox (本投票系统有舒墨,刘英爽,矣刚共同开发完成! n 无线表决系统1.00, 关于系统0, 0) ;具体效果如图-8所示:图8 about窗口界面2.编辑框和静态文本框编辑框和静态文本框的使用也是使用比较普遍的两个控件,通常这两个控件在程序中的使用主要是用于显示数据,编辑框相对于静态文本框多了一个可输入的功能。编辑框在本软件中的功能主要是实现数据的显示和在串口通信中实现数据的传递工作,静态文本框在整个程序中实现的只是显示功能即用于对相关控件的功能说明。在编辑框和静态文本框下一般不用编写代码,两者都是被动响应,也就是说在其他控件(如按钮)中的代码将相关数据传递给编辑框和静态文本框显示,所以这两者在使用的时候注意两者ID的名称。如“连接”按钮被按下时在静态文本框“连接状态”上显示“连接中”字样的代码如下:GetDlgItem(IDC_STATIC)- SetWindowText(连接中.0);IDC_STATIC为静态文本框“连接状态”ID号,此语句的意思为在ID号为IDC_STATIC的静态文本框中显示“连接中”字样。3. 组合框控件CComboBox组合框控件在控制端软件界面的参数选择区提供表决参数的选择功能,为投票参数的选择带来了极大的方便(如图-9和图-10所示)。在单人投票模式和多人投票模式下均使用了CComboBox组合框控件,控件的选择数据可以在控件属性中手动输入,在单人模式下赋予组合框控件变量名m_combo,多人投票模式下为m_como。两者的变量类型都为CComboBox类型,在Message类型中选择CBN_SELCHANGE类型即选中下拉菜单时候响应该控件是的函数,以单人投票模式下组合框消息响应代码为例:CString m_strtemp; /存放得到的编辑框内容int nIndex=m_combo.GetCurSel(); /得到被选中内容索引m_combo.GetLBText(nIndex,m_strtemp); /得到被选中内容的名字GetDlgItem(IDC_STATIC11)- SetWindowText(m_strtemp); /被选中的内容在编辑框里显示图10 多人模式组合框界面图9 单人模式组合框界面 3.3.3 ActiveX控件Visual C+为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据,详细的串口通信在第四章完成。第四章 串口通信和虚拟硬件连接4.1 串口通信的实现32位下串口通信程序可以用两种方法来实现:利用ActiveX控件;使用API 通信函数。本无线表决系统控制端的串口通信的实现使用的是第一种方法,即使用ActiveX控件。Visual C+为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。4.1.1 添加MSComm控件在Visual C+创建的MFC工程,其中的控件选择版面并没有MSComm控件,得在当前的workspace中添加。具体流程为:Project菜单-Add to Project-Components and Controls-Registered ActiveX Controls-选择Components: Microsoft Communications Control.成功添加后在控件版面出现图标。4.1.2 初始化串口所谓串口的初始化就是对串口的参数进行设置,比如串口号、传输数据的类型及波特率等串口的属性的预设置。在开始初始化之前对MSComm控件属性进行设置,确定控件的变量名和变量类型,在软件编程中以m_mscomm为控件的变量名,选择变量类型为CMSComm型。这个时候可以开始串口的初始化,在ClassView选项卡中的CMyDlg下的onInitDialog()下编写初始化代码如下:if(m_mscomm.GetPortOpen() m_mscomm.SetPortOpen(FALSE);/如果串口是打开的,那么关闭串口m_mscomm.SetCommPort(3); /选择串口号com3if( !m_mscomm.GetPortOpen() m_mscomm.SetPortOpen(TRUE);/打开串口 else AfxMessageBox( cannot open serial port ); m_mscomm.SetSettings( 9600,n,8,1 ); /波特率9600,无校验,8个数据位,1个停止位 m_mscomm.SetInputMode(1); /1:表示以二进制方式检取数据 m_mscomm.SetRThreshold(1); /参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件 m_mscomm.SetInputLen(0); /设置当前接收区数据长度为0 m_mscomm.GetInput();/先预读缓冲区以清除残留数据至此串口初始化完成,在程序运行时首先执行的就是onInitDialog()下的初始化程序,实现串口的各项设置。4.1.3 串口的读写数据MSComm 类的读写函数比较简单:GetInput()和SetOutput()。函数原形分别为VARIANT GetInput()和void SetOutput(const VARIANT newValue),均使用VARIANT类型。但PC机发送和接收数据时习惯用字符串形式。MSDN中查阅VARIANT类型,可以用BSTR表示字符串,但所有的BSTR都包含宽字符,而只有Windows NT支持宽字符,Windows 9X并不支持。所以要完成一个适应各平台的串口应用程序必须解决这个问题。在对MSComm控件进行变量定义命名的时候以m_mscomm为控件的变量名,选择变量类型为CMSComm型,Message则为OnComm类型。完成以上工作后开始对MSComm控件进行消息代码的写入: VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; if(m_mscomm.GetCommEvent()=2) /事件值为2表示接收缓冲区内有字符 variant_inp=m_mscomm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;k len;k+) safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组 for(k=0;k SetWindowText(m_strtemp); /被选中的内容在编辑框里显示程序开始运行时可以看到如下情况:程序运行后程序运行前 图12 程序运行前后的对比5.1.2 开始投票和参数选择在按下开始按钮的时候,开始执行预先编码的代码,代码主要的功能是扫描参数选择部分的组合框,通过几个if语句跳转至不同的程序段并向串口发送不同的数据,如代码段:int nIndex=m_combo.GetCurSel(); /得到被选中内容索引m_combo.GetLBText(nIndex,m_strtemp); /得到被选中内容的名字 if (m_strtemp=m_a) /m_a为组合框选中1时的值 GetDlgItem(IDC_send)- SetWindowText(00010001); /00010001为组合框选择1时开始投票的指令代码,此代码是预先编好的和单片机中的一致UpdateData(TRUE); /读取编辑框内容 m_mscomm.SetOutput(COleVariant(m_danrenstrTXData);/发送数据5.1.3 投票开始和数据显示 投票开始后会有来自手持设备端的数据进入,在经过MSComm控件程序的判断之后将数据送入相应的编辑框,此时的编辑框内容表示的是“赞成”,“反对”等数据的和,也就是被选举对象的票数情况,在这个过程中应该主要传递数据的格式,因为在做数据处理(加法处理)时必须是以整数的形式进行,所有在相加之前得进行数据转换,如下列代码段:if(m_danrenstrRXData=01110001) /01110001为投赞成票时手持设备发送来的编码 m_cc=atoi(m_zc);/ 数据格式转换 UpdateData(TRUE);

温馨提示

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

评论

0/150

提交评论