![毕业论文基于c的rs232通信协议模拟终端_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/4e930863-b474-42ae-85a3-b0addbb14f59/4e930863-b474-42ae-85a3-b0addbb14f591.gif)
![毕业论文基于c的rs232通信协议模拟终端_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/4e930863-b474-42ae-85a3-b0addbb14f59/4e930863-b474-42ae-85a3-b0addbb14f592.gif)
![毕业论文基于c的rs232通信协议模拟终端_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/4e930863-b474-42ae-85a3-b0addbb14f59/4e930863-b474-42ae-85a3-b0addbb14f593.gif)
![毕业论文基于c的rs232通信协议模拟终端_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/4e930863-b474-42ae-85a3-b0addbb14f59/4e930863-b474-42ae-85a3-b0addbb14f594.gif)
![毕业论文基于c的rs232通信协议模拟终端_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/4/4e930863-b474-42ae-85a3-b0addbb14f59/4e930863-b474-42ae-85a3-b0addbb14f595.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、密级:公开基于c+的rs232通信协议模拟终端analog terminal the rs232 communicationprotocol based on c+2013年06月随着科技的迅猛发展,通信技术已经成为社会经济、环境、生活、工作、学习不可 缺少的一部分。通信的方式多种多样,以何种方式实现通信主要取决于通信设备。在工 业控制系统和实验室中,由于串行通信具有实现简单、使用灵活方便等优点,串行通信 是计算机与外部设备进行数据通信时经常使用的方式z-0围绕串行通信技术,本文主要介绍了串行通信接口rs232标准串口,阐述了 rs232串行通信基本原理和crc校验,通过vc界面编程实现串行通
2、信。传输过程中 通过crc对数据进行校验。在研究rs232串行通信原理中,主要介绍了 rs232标准协议、串口以及串口通信 原理。详细的分析了儿种主要的通信参数。按照其工作原理及rs232串口的标准协议最 终采用串行全双工的方式实现其通信,木文中的接口使用的是计算机上的usb uo在软件实现方面,本设计在比较了多种方法之后,最终选择了基于c+的mfc应 用程序。利用mscomm activex串行通信控件来实现串行通信。文中详细地介绍了 vc 下的windows平台先进的activex控件技术,即mscomm控件等。最终实现了两台 pc间的串行通信。串行通信以其成本低、结构简单等优点被人们广泛
3、应用。用rs-232协议实现两台 pc机间的串行通信为以后实现更加复杂的设备间通信奠定了基础。关键词:rs232标准;串行通信;c+; crc校验abstractwith the rapid development of science and technology, communication technology has become an indispensable part of social economy,environment,living and learning. there are many kinds of communication modes.the selectio
4、n of communication mode mainly depends on the communication equipment.in industrial control systems and laboratory.serial communication is widely used in computer and external equipment due to the simple and flexible advantage.around serial communication technology, this paper mainly introduces the
5、serial communication interface - rs232 serial port, and expounds the basic principle of rs232 serial communication and crc check.finally, realize serial communication through vc programming during the process of transmission through the crc to check the datain the study of rs232 serial communication
6、 principle, this design mainly introduces the principle of serial communication, serial port and rs232 protocol, and analyzes communication parameters in detail.considering rs232 serial port and working principle,this design adopted to serial full-duplex mode to realize communication.in this article
7、 ,the interface is the usb port on the pc.in the aspect of software realization,this design select the mfc application program based on c+ after several methods are compared.to realize the serial communication by using mscomm activex serial communication control.this article introduces the activex c
8、ontrol technologymscomm control.finally,the design realize serial communication between two computers.because of the advantages of low cost and simple structure,serial communication is widely used by people.realization of serial communication between two pc machine is the foundation of realizing mor
9、e complex communication.keywords: motor; rs232protocol; serial communications; c+; crc cyclic redundancy check摘 要iabstractii第1章绪论11.1课题的研究意义11.2研究现状及发展趋势21.2.1 rs232串行通信的研究现状21.2.2 rs232串行通信的发展趋势21.3本文主要的研究内容2第2章串行通信基本原理42.1 rs232通信协议42.1.1 rs232 标准42.1.2 rs232 接 口42.2串行通信52.2.1串行通信基本原理52.2.2串行通信参数6
10、2.2.3串行通信的分类72.3串口的调制82.3串口连接82.3.2串口调试92.4本章小结10第3章crc校验113.1 crc校验原理113丄1 crc校验码的基本原理113.1.2 crc校验码权的形式123.2 crc校验的实现133.3木章小结13第4章软件的实现及其测试144开发工具概述144windows编程与mfc144.1.2串行通信控件mscomm144.2程序的主要功能154.3程序运行平台174.4详细设计174.4.1建立工程174.4.2界面功能实现184.4.3模块分析214.4.4程序测试324.5本章小结36第5章结论37参考文献38致 谢错误!未定义书签。
11、第1章绪论1.1课题的研究意义在发展如此迅速的信息化时代,随着计算机的普及和信息技术的发展,形 成了对信息的获取传送处理利用的完整技术体系,并在此基础上形成了通信技 术,它应用在生产、医疗、教育、生活等多种领域,成为现今社会生存和发展 不可或缺的技术。随着通信技术的不断创新和发展以及计算机网络和多微机系统的广泛应 用,usb通信技术的发展如此迅速,尽管如此,然而串口通信技术以其实现简 单、使用灵活方便、数据传输可靠等优点并未面临被淘汰,反而在通信领域中 一直都被人们广泛的应用。它主要被广泛应用在工业控制生产和实验室等重要 领域。vc+是新一代面向对象的口j视化开发工具,作为一个主流的开发平台一
12、直 深受编程爱好者的喜爱,提供了良好的界面设计资源,是当下图形开发的一个 比较重耍的技能和手段,window图形界面编程就是vc+编程开发的经典展现 之一。windows 图形界面编程下的 mfc,全称是 microsoft foundation classes, 它是win32中的应用程序,口前win32中基于vc+6.0的串口通信程序一般可 以用两种方法实现:一是利用mscomm activex串行通信控件;二是使用 windows api通信函数。其中windows平台先进的activex技术对串口编程不 再需要处理繁琐的细节。利用已有的activex控件技术,只需要编写少量的代码, 就
13、可以轻松高效地完成通信任务。这样做会给编程者省去很多的代码工作量。伴随着科学技术的不断创新与现代化生产过程中智能化、自动化程度的不 断提高,越来越多的综合过程和控制系统需要开发自身的监测控制平台与数据 处理采集,利用windows编程技术开发这样的应用程序吋,其中要面临的最关 键的问题是与外围监控设备连接与通信。与外围监控设备通信实际上是计算机 与计算机或计算机与终端机之间的数据传递,它可以采用串行通信和并行通信 两种通信方式。由于串行通信方式具有使用线路少、成本低、特别是在远程传 输吋,避免了多条线路特性的不一致而被广泛采用。所以现在大量的智能仪器、工控设备、实验研究设备或数据釆集模块都带有
14、rs232串行通讯接口,通过相 应的通讯协议和串口通讯程序,可以将测试、采集的数据传输到上位工控机, 以满足各种形式后续数据处理的要求。同时整个监控系统会根据系统运行情况 通过串口向监控设备发送指令,调节设备的运行参数等使得生产过程平稳进行。 所以研究rs232串行通信意义非常重大。1.2研究现状及发展趋势121 rs232串行通信的研究现状目前,串行通信在各类领域中都得到了广泛的应用,同时它还具有较高的 性价比和传输可靠性等优点。rs-232被定义为一种在低速率串行通信屮增加 通信距离的单端标准。串行通信中的串口应用始于1960年,然而rs-232的初 始版木于1969年才得到认证,认证的版
15、木号为rs-232c,在这么前有rs-232a、 rs-232b这两个版木。rs-232标准主要适用于通信设备,它主要采取不平衡传 输方法,即所谓的单端通信。近年来,串行技术与连接设备都得到了很大的发 展,串口设备在设备电缆、工业控制和软件应用程序中得到了大量的应用,毫 无疑问,串行连接技术仍然是工商业、医疗、教育和实验室等领域屮所应用的 广泛标志。1.2.2 rs232串行通信的发展趋势rs-232协议自i960年形成,1969年得到认证,一直到如今的广泛使用, 始终随着各种领域应用需求的不断变化而稳步发展。未来rs-232串口通信仍将 在低成木、设计简单的产品中继续发挥着重要作用。低供电电
16、压和高数据率等 都将成为未来发展屮新设计的普遍要求。我们坚信rs-232 一定会继续随着各种 外围设备的不断发展而提高,同时也将继续保持通信领域中应用最为广泛这一 地位的。1.3本文主要的研究内容木文主要通过rs232标准串口协议,使用vc+编程语言实现串行通信,最 终完成模拟终端的调试与仿真。在设计过程屮,我通过查阅大量相关书籍和资 料,研究学习了 rs232标准协议和vc+编程语言下的mfc界面编程,学习串 行通信相关知识,通过编程软件的仿真完成了基于c+的rs232通信协议的模 拟终端。具体研究内容如下:了解rs232协议,串口和串行通信原理。分析rs232串行通信的基本原理,并通过串口
17、调试助手调通串口以方便接 下來的操作。了解crc校验,掌握crc校验基木原理及应用。在vc+高级语言中,利用windows下的mscomm activex控件,实现两 台计算机间的通信测试与仿真。第2章串行通信基本原理2.1 rs232通信协议2.1.1 rs232 标准rs-232标准(协议)(ansi/eia-232标准)的全称是eia-rs-232c标准, 其中eia代表美国电子工业协会,rs代表推荐标准,232是标识号,c代表rs-232 的修改次数。rs-232c标准是美国eia (电子工业联合会)与bell等公司一起 开发的1969年公布的通信协议。rs232协议一共冇25条信号线
18、,其中包括一个主通道和一个辅助通道,大 多数情况下主要使用的是主通道,尽管有如此多的信号线,但是对于一般双工 通信,仅需要其中几条信号线就可实现数据的传送,如一条发送线、一条接收 线和一条地线。它适合于数据传输速率在020000b/s范围内的通信,即为每秒 50、70、100、150、300、600、1200、2400、4800、9600、19200 波特。这个标 准对串行通信接口的有关问题都作了明确规定。rtr丁通信设备厂商都生产与 rs-232c制式兼容的通信设备,因此,它作为一种标准,廿前已在微机通信接口 屮广泛采用,例如在ibm pc机上的comk com2接口,就是rs-232c接口
19、。 它规定连接电缆、机械、电气特性、信号功能及传送过程等。同吋,由t rs-232 标准具冇连线简单、通讯距离长等优点,目前也广泛应用于微型计算机系统、 工控机和大型设备系统屮。2.1.2 rs232 接 口rs232标准是按负逻辑定义的,它的电平在一5一15 v之间,“(t电平 在+5+ 15 v之间。rs232接口是标准串行接口,其通讯距离小于15 m,它的 传输速率小于20 kb/so rs232串行接口属丁个人计算机(pc)及电信应用领 域中最为成功的串行数据标准。是目前pc机与通信工业中应用最广泛的一种串 行接口。现在的计算机一般至少有两个串行口 com1和com2,新一代的计 算机
20、主耍以9引脚的d型口接出所有的rs232通信信号及控制线(有的计算机 的串口为25引脚)。在rs232的通讯标准中是以一个25针的接口來定义的,25针的接口在早期的计算机如pc或xt机型上广泛使用,但在at机以后的机 型上,实际均釆用了 9针的简化版接口应用,现在所说的rs-232通讯均默认为 9针的接口。现在大多数个人计算机儿乎都没有串口,大多采用usb接口,所 以要实现个人计算机与外围设备进行通信大多釆用rs-232转usb接口 ors-232 9针通讯的接口图如图21所示。图2-1 9针通讯接口2.2串行通信2.2.1串行通信基本原理两个设备之间交换数据的过程我们称之为通信。从同时传输的
21、数据位数 来分通信方式可以分为串行通信(serial)和并行通信(parrel)。并行通信中所 传送数据的各位同时发送或接收。串行通信中所传送数据的各位按顺序一位一 位地发送或接收。两种基本通信方式如图22所示:串行通信并行通信图2-2两种基木的通信方式从上面的图中可以看到,并行通信成木高,并须使用多条通信线,而串行 通信只需使用两条通信线就可以完成两个设备间的数据交换,大大降低了通信 成本,串行通信乂以其串行线间的干扰小得到了广泛的应用。串行通信大多数用于windows开发的应用程序与外围数据源设备z间的数 据交换。串行通信是通过串行端口实现的。串行端口的木质功能是作为cpu 和串行设备间的
22、编码转换器。当数据从cpu经过串行端口发送出去时,数据格 式由字节数据转换为串行的位(byte)o在接收数据时,数据格式由串行的位(bit) 被转换为字节数据。2.2.2串行通信参数串行通信在数据交换过程中,要对儿个重要的通信参数进行设置,其中包 括波特率、数据位、停止位、奇偶校验位等。(1) 波特率所谓波特率就是每秒中传送的二进制位数,其单位是bps (bits per second), 用来描述数据的传送速率,是衡量串行通信数据传输速度快慢的重要指标。国 际上对波特率规定了一个标准系列:110bps、300bps、600bps、1200bps、1800bps> 2400bps>
23、 4800bps> 9600bps> 14.4kbps> 28.8kbps> 33.6kbps、56kbps。例如: 9600bps,是指每秒传送数据9600位,其屮包含字符的数位和其它必须的数位。 串行接口电路的接收波特率和发送的波特率可以设置,要求接收方的接收波特 率必须与发送方的发送波特率是一致的。在串行通信中,通信线上所传输的字 符数据(代码)是逐位传送的,一个字符由若干位组成,所以每秒钟所传输的 波特率和字符数(字符速率)是完全不同的。有时也用“位周期”来表示传输速率, 位周期是波特率的倒数。(2) 数据位数据位是衡量通信中实际数据位的参数。当计算机发送一个信
24、息包,实际 的数据不会是8位的,标准的值是5、7和8位。如何设置取决于传送的信息。 数据位通常为58位,它紧跟在起始位之后,是被传送字符的有效数据位。传送 时先传送字符的低位,后传送字符的高位。数据位的位数可以有硕件或软件设 备进行设置,以满足设备间数据交换的需要。(3) 停止位停止位一般为1、1.5和2位,用于表示单个包的最后一位。停止位不仅仅 是表示传输的结束,并且提供计算机校正吋钟同步的机会,因为数据是在传输 线上定时的,并且每个设备都有其口己的时钟,很可能在通信中要进行数据交 换的两台设备间出现小小的不同步,设置停止位就是为了避免其中的小小的不 同步。停止位的位数的设置可以由设备的软件
25、设置,停止位的位数越多,不同 时钟同步的容忍程度越大,但是数据传输率和应地也会越慢。(4) 奇偶校验位在串行通信屮奇偶校验是一种简单的检错方式,奇偶校验位仅占一位,用 于进行奇校验和偶校验,同时也可以无校验位。对于奇校验和偶校验,串口会 设置校验位,是数据位后面的一位,用一个值保证传输的数据有偶个或者奇个 逻辑高位。例如,如果数据是001,那么对于奇校验,校验位是0,。如果是偶校 验,校验位是1。这样使得接收设备能够知道一个位的状态,有机会判断是否有 噪声干扰了通信或者传输和接收数据是否发生了不同步。2.2.3串行通信的分类串行通信乂可以分为同步串行通信和界步串行通信两类。同步通信是一种在发送
26、端发送一个抑制载波的双边带信号,而在接收端恢 复载波,再进行检波的通信方式。是按照软件识别同步字符来实现数据的发送 和接收。它是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。 信息屮含有若干个数据字符。它们均由数据字符、crc即同步字符和校验字符 组成。因为恢复的载波与被接收的信号载波同频同相,故取名为同步通信,也 称抑制载波双边带通信。异步通信数据通常以字符或者字节为单位组成字符帧传送,字符帧由发送 端逐帧发送,通过传输线被接收设备逐帧接收。并步通信通常有两个非常重要 的指标:即字符帧格式和波特率。发送端和接收端可以由各口的时钟源來控制 数据的发送和接收,这两个吋钟源彼此独立,互不
27、同步,接收端检测到传输线 上发送过来的低电平逻辑”0“(即字符帧起始位)时,确定发送端已开始发送数 据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕v 异步通信有自己的的缺点,其缺点是它在通信时的传输效率较低。当然它也具 有自己独特的优点,其优点就是它的通信设备简单、便宜。2.3串口的调制231串口连接现在大多数计算机外用接口都是usb 口,外用接口很少有串口的,并且现 在的个人计算机的串口大多都是简型的9针串口。所以要想通过串行通信实现 与外围设备数据交换,必须用usb转rs-232 9针串口转换线。9芯管脚图如图 2-3所示。、00 000 0 000图23 9芯管脚图表2
28、19针管脚齐引脚名称功能图九针串口针号缩写功能说明信号来源1dcd功能说明调制解调器2rxd接收数据调制解调器3txd发送数据pc4dtr数据终端准备pc5gnd信号地6dsr数据设备准备好调制解调器7rts请求发送pc8cts请求发送调制解调器9dell振铃指示调制解调器目前,市场上使用的串口有9针管脚的还有25针管脚的。在rs-232的通 讯标准屮是以一个25针的接口来定义的,并且在早期的计算机屮,如pc机或 xt机型上得到了广泛地使用,但是在at机以后的机型上,实际上均采用了 9 针管脚的简化版木应用,现在所说的rs-232通讯均默认为9针的接口。图2-3 显示了9针通讯的接口管脚,9针
29、管脚的串口各引脚名称、功能和信号来源各不 相同。表21说明九针管脚的串口各引脚的名称,功能说明和信号源等。由表2-1可知要想实现两台个人计算机间的数据交换,可以将两个usb转 rs-232线的接口头的2、3引脚交叉对接,两个5脚相接即可,具体接法如图 24所示,然后再讲两个usb接头与两台电脑相连。图2-4 usb转rs232线的连接图2.3.2串口调试实现个人计算机与外围设备间的串行通信必须将个人计算机上的串口调 通,验证一下个人计算机上的串口是否好用。这就需要用到串口调试小助手。 首先将一根usb转rs-232转换线的2、3引脚短接,然后将带有“驱动程序"的 光盘放入个人计算机中
30、,安装并运行与自己计算机相匹配的驱动程序,接着将 转换线的usb端插入个人计算机的usb 口,即完成了初步的安装。打开设备管 理器,看一下所插入的转换线山的是哪个串口,因为在接下来调试串口要用到。串口调试助手是一个专门用來调试串口程序的功能软件,要想测试串口是 否可用,应先打开软件,选择串口号,打开串口,在发送区输入内容,点击发 送按钮,若在接收区中有所发送的内容,则证明此串口可用。2.4本章小结木章从原理上介绍了串行通信的基木原理,详细的阐述了 rs232标准协议 接口和与串行通信相关的一些知识。介绍了通信参数与串行通信的分类。为下 文编写windows应用程序实现两台pc机进行数据交换提供
31、了基础。第3章crc校验3.1 crc校验原理3.1.1 crc校验码的基本原理在早期的通信中,由于通信技术不够可靠(不可靠性的来源是通信技术决 定的,比如电磁波通信时受雷电等因索的影响),这样不口j靠的通信就会带來“确 认信息'的麻烦,造成-些事情的延误等。为了避免这一弊端,在进行数据交换, 通信的过程中,对通信的可靠性检查就需耍校验,校验是从数据本身进行检查, 它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果口j 靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复(。如早期一样目前在通信系统的数据传输过程中,由丁信道中各种复朵因索 的影响,使传输的信号受到干扰
32、,造成传输过程中误码的出现。接收方为了检 查所接收的数据是否有误码,可采用多种检测方法。差错控制编码是口前数据 传输过程中普遍采用的一种提高数据通信可靠性的方法,而crc是一种在实际 通信中应用很广泛的差错控制编码,具冇很强的检错能力。crc (cyclic redundancy check)循环冗余校验码是数据通信领域屮最常用 的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。crc 循环兀余校验码的基本原理是任意一个出二进制位串组成的代码都口j以和一个 系数仅为o和t取值的多项式一一对应。例如:代码101011对应的多项式为 尸+灯+x + l,而多项式为x6 + x5 +
33、x2+l对应的代码110010k crc校验 码是在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种 编码也叫(n, k)码。crc校验码的生成借助于多项式除法,其余数为校验字段。其中发送方发 出传输字段,传输字段出两部分组成的,分别为信息字段和校验字段。接收方 使用相同的生成码进行校验,若接收到的字段或生成码(二进制除法)如果能 够除尽,则说明在通信过程中,数据交换期间未受到其他因索的干扰,消息收 发成功。3.1.2 crc校验码权的形式crc校验码有很多种权的行式,使用哪一种形式是根据通信双方共同制定的“规则”而定的,其中各种常用权的形式如下所示:c/?c8 = x8+x5+
34、x4+1(3-1)crc - ccitt = x " + x v + x § +1(3-2)c/?c16 = x16 + x,5 + x5+1(3-3)c/?c12 = x12 + xn+x3 + x2+1(3-4)crc32 = x 32 +x 26 +x 23 +x 22 +x,6 + x,2 +x,+x,o +x8+x7+x5+x4+x2 + x+l(3-5)以其中crc-ccitt形式为例。图31说明了 crc校验中crc值是如何 计算出来的,体现的多项式正是式(3-5) o从把数据移位开始计算,将数据位 (从最低的数据位开始)逐位移入反向耦合移位寄存器。当所有数据
35、位都这样 操作后,计算结束。此时,16位移位寄存器中的内容就是crc码。图3-1中 x代表bit5, x“代表bitl2, 1是代表bito, x"比较特别,是指移位寄存 器移入的数据。串联商财输入图31生成crc-ccitt的移位寄存器的作用原理3.2 crc校验的实现实现crc校验有很多种算法和方式,最基木的算法应该是按位计算了,这 个方法可以适用于所有长度的数据校验,是最为灵活的,但由于是按位计算, 其效率并不是最迅速、最优的,只适用于对速度不敏感的场合。还有一种是按 照字节计算crc校验码,按字节校验是每次计算8位数据,多是基于杳表的算 法,首先要准备一个表,一共256项。在
36、使用的吋候,把计算出来的校验值放 在最后两个字节里,将其发送出去,接收端对所有的数据进行相同的校验,如 校验值为0我们则认为其数据没有出错。这个是按高位到低位的发送顺序时使 用的校验方法。3.3本章小结木章介绍了通信屮最常使用的校验方法,即crc校验。分析了 crc校验 原理、算法形式和算法的实现。并通过crc校验实现通信中的检错。第4章软件的实现及其测试4.1开发工具概述4.1.1 windows 编程与 mfcwindows编程人致有两种方法,一种是windows c方向,即sdk 7j向,调 用win 32 api函数,主要是利用c语言來实现软件的功能与编程;另外一种方 法是c+对sdk
37、函数进行包装,如vc的mfc (微软基础类库),bob的owl 等。其中使用mfc 直接编写提供人量预先编好的类和支持代码或使用mfc和 向导(wizards)编写,用appwizard來生成windows应用程序框架。木次软件程序设计功能的实现主要利用windows编程屮mfc (利用c卄语 言)。mfc提供了构造windows应用程序的框架,它不仅为应用程序建立标准 的结构,还为其提供了标准的图形用户界面如菜单栏、工具栏、状态栏等,开 发人员只需要在此基础上添加针对特定应用的代码即可。使用此应用程序框架 有很多优点,如其应用程序代码小,运行速度快,并且此应用程序提供的工具 也降低了编码的难
38、度等。windows应用程序的框架主要有两种类型,一种是基于对话框的应用程序框 架,另外一种是基于文档、视图结构的应用程序框架。平犬家所见到的犬多数 windows应用程序均属于这两种框架。mfc的全称是microsoft foundation classeso 是微软把windows api 进行封 装的类库,该类库以层次结构组织起来,其中封装了人部分windows api函数和 windows控件。1989年微软公司成立application framework技术团队,名为afx 小组,用以开发c+面向对象工具给windows应用程序开发人员使用。启用mfc 编码可以使windows程序
39、员能够利用c+面向对象的思想进行编程,用好的类作 为标准,减少代码的编写量。4.1.2串行通信控件mscomm目前,以win 32下的mfc应用程序为主耍框架,基于vc+的常用串行 通信编程一般口j以用两种方法实现:一种是使用windows api通信函数。虽然 在windows k win32api提供了使用文件操作方式的函数进行串口操作的方法, 但是在编程实现上还是比较复杂。其余一种是利用mscomm activex串行通信 控件。windows平台先进的activex技术利用el有的mscomm activex控件, 只需要编写少量的代码,就可以轻松高效地完成任务,使得对串口编程不再需
40、要处理烦琐的细节。这样程序员就不需要花费大量吋间去了解复杂的api函数, 只需要利用mscomm控件就可实现串口编程。所以,本次实现两台pc间的通 信使用的就是mscomm控件。4.2程序的主要功能实现两台pc机z间的通信的应用程序,主要实现了密码登陆、参设设置、 参数显示、打开串口、关闭串口、数据发送、数据接收等功能。主要功能框图 如图41所示。主函数密码登录参数设置打开出口关闭串口接收数据发送数据图41主要功能框图应用程序主要实现的功能如图41所示的主要功能框图,此应用程序的总体 程序流程图如图42所示。图42程序流程框图使用此应用程序时,需要有止确的用户名和密码才能登录到此软件的主界 面
41、,登录到主界面后,要想实现两台pc间的通信则需要选择可用的串口号并且 传输参数要一致,其中包括波特率、数据位、停止位、奇偶校验位等,只有设 置对的参数才能实现数据交换的功能。在发送接收数据过程中需要打开串口。 通信结朿后,关闭打开的串口。能够发送单个或多个数据。能够接收和显示多 个数据。程序流程图如图32所示。4.3程序运行平台在程序设计时,原计划使用vs2008软件,但是由于电脑、操作系统等各种 原因,就改用vc+ 6.0这个软件。4.4详细设计4.4.1建立工程要实现通信,首先应先建立工程,即新建基于win32的mfc应用程序。首 先打开vc+6.0软件,建立基于对话框的mfc应用程序。并
42、将这个应用程序命 名为通信。然后在将基于对话框选中(如图43),直接下一步即可,最后直到 完成。9 i s3 ii图43建立基于对话框应用程序过程图按照如上所示的方法步骤,建立win32 f的mfc应用程序工程,应用程 序工程名为“通信",最后点击完成按钮,就会出现mfc应用程序初始界面如图 4-4所示。取消todo:在这里设置对话控制。图4-4应用程序最初界面4.4.2界面功能实现1登录界面登录界面的设计除了应用mfc中的控件和工具外,要想实现其用户名和密 码的验证功能述利用了数据库的知识。本次登陆界面使用的数据库是微软的 access数据库。access数据库是一个小型的数据库,
43、使用起来非常的灵活、方 便。对access数据库的连接与操作有很多种方法,例如在asp中建立对access 数据库的连接、使用recordset对象操作access数据库、使用sql指令操作数 据库、使用dsn连接access数据库等。其中使用dns连接access数据库方法 中,在定义dsn的时候,就已经指定好了数据源需要的odbc驱动程序,也指 定好了数据库文件的实际路径和名字,我们在程序屮,只需要引用预先定义的 数据源名dsn即可。首先,启动 microsoft office access,建立 access 数据库,命名为 demoo 1, 然后在数据库屮创建一个表,命名为puser,
44、在表puser 111输入序号(userid) > 用户名(usemame)和密码(userpwd),将这个数据库保存。最后为access数 据库demoo 1建立数据源,利用odbc驱动。数据库和数据源建立完成后,开 始用mfc建立登陆界面。数据库屮用户名和密码如图4-5所示。1 puseruserid丁username userpwd us erable 1富卓5212142zz3cc789图45数据库屮用户名和弱密码运行应用程序吋,若输入了错误的用户名或密码,则系统会提示输入错误。 若输入用户名和密码正确,即与access数据库表login内容相一致,点击登录按 钮,出现提示正确,
45、点击确定按钮应用程序的界面会由登陆界面跳转到主界面, 开始进行数据交换。登陆界面如图46所示。图4-6登录界面2.主界面主界面是整个应用程序的主体,大致可划分为三部分,有接收区、发送区 和设置区。接收区由静态文木框和编辑框组成;发送区同样也是由静态文木框 和边界框组成;设置区由组合框、按钮和静态文本框组成。完整的主界面如图 4-7所示。图47主界面3.参数设置界面完成两台pc机间的串行通信(数据交换),必须保证两个串口的通信参数 一致,这样就需耍将两个应用程序的通信参数重新设置,通信参数包括波特率、 数据位、停止位、奇偶校验位等。相应的通信参数设置完成后,点击【确定】 按钮,应用程序则会再次跳
46、转到主界面(数据收发界面),若想取消设置则点 击取消按钮,参数设置界面关闭,回到主界面。界面的具体情况如图48所示。图4-8设置界面4.4.3模块分析1 用户名密码登录模块在登录界面卜在编辑框中输入用户名和密码,单击界面中的【登录】按 钮,可以验证用户名密码输入是否正确,若正确登录,程序提示“登陆成功,欢 迎使用! ”,然后登陆界而关闭显示主界而,若输入错误则程序捉示“密码用户名 错误,请重新输入!豐需要重新输入和验证,验证通过后才可以登录。实现该 功能的程序流程图如图49所示,实现该功能的程序代码如下:图49用户名密码登录模块流程图void cmylogin:onbnclickedok()/
47、 todo: add your control notification handler code hereonok();void cmylogin:onok()todo: add extra validation hereupdatedata(true); 读取编辑框内容cuserrecordset m_user;tryif(m_user.isopen()m_user<close();m_user.m_strfilter.format(nusername=,%s,anduserpwd=,%shm_username,m_us erp wd);m_user.open(crecordset:
48、snapshot,null,crecordset:none);if(m_user.iseof()/密码用户名不一致m_user.close();afxmessagebox("用户名、密码错误,请重试! ”);return;elsem_user.close();afxmessagebox(h登录成功,欢迎使用! ”);cdialog:onok();catch(cdbexception* e)e> reporterror();return;2. 应用程序初始化实现先显示登陆界面后主界面,利用mfc中的模式对话框在初始化函数中 来实现,若串口是打开的则关闭串口,同吋串口参数的设置也是
49、在初始化函数 中设置实现的。初始化的程序流程图如图410所示。具体程序代码如下面所示:图410初始化流程图bool cmydlg:oninitdialog()cdialog: :oninitdialog();/ todo: add extra initialization herecmylogin my; my.domodal();/显示登录界面 if(m_ccomm.getportopen() /如果发现串口木來是打开的,则关闭串口 m_ccomm.setportopen(false);m_ccomm.setcommport(4); 选择com4端口m_ccomm.se(inputmode(
50、 1); /输入方式为二进制方式 m_ccomm.setinbuffersize(1024); 设置输入缓冲区 m_ccomm.setoutbuffersize(512); 设置输出缓冲区 m_ccomm.setsettings(n9600,n,8,1 *);/波特率,无校验,个数据位,个停止位 return true; / return true unless you set the focus to a control3. 设置、打开和关闭串口功能图411设置、打开和关闭串口流程图吊行通信是通过吊口实现数据交换的,但是pc机上有不止一个吊口,需要 我们设置进行串行通信端口号,并将串口打开,
51、通信结束后将串口关闭口】。程 序流程图如图411所示,实现其功能代码如下:void cmydlg:onopen()/ todo: add your control notification handler code here if(m_ccomm.getportopen()m_ccomm.setportopen(false);cmydlg mdl;updatedata(true);mdl.m_conm = m_comn;m_ccomm.setcommport(m_comn+1); 设置串口号 m_ccomm.setinbuffersize(1024); 接收缓冲区 m_ccomm.setout
52、buffersize(1024);/ 发送缓冲区 m_ccomm.setinputlen(0);/设置当前接收区数据长度为,表示全部读取 m_ccomm.setinputmode( 1);/以二进制方式读写数据m_ccomm.setrthreshold(l);/收缓冲区有个及个以上字符吋,将引发 接收数4e的o ncommmscomm事件if(!m_ccomm.getportopen()m_ccomm.setportopen(true); 打开串口m_ccomm.setrthreshold( 1); 每当接收缓冲区有个字符则接收串口数据 m_ccomm.setinputlen(0); 设置当前
53、缓冲区长度m_ccomm.getinput(); 预读缓冲区以清除残留数ieelseafxmessagebox(n 打开端 口失败!”,mb _iconstop,0);void cmydlg:onclose()/关闭串口/ todo: add your control notification handler code here m_ccomm.setportopen(false);4. 实现数据交换模块使用mscomm通信控件是mfc屮进行串口通讯最简单的。mscomm通信 控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其 他通信设备(如modem)还可以发送命令、进行数
54、据交换以及监视和响应在 通信过程屮可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动 的、高效实用的通信程序叫 加入mscomm通信控件,实现从缓冲区中读取数 据,同时将数据给接收变量,更新接收区编辑框的内容。实现此模块的程序流 程图如图412所示,其功能代码如下:图412数据交换模块流程图代码如下:void cmydlg:ononcomm()/ todo: add your control notification handler code herevariant variant_inp;colesafearray safearray_inp;long len,k;byte rxda
55、ta512;/设置byte数组cstring strtemp;if(m_ccomm.getcommevent()=2) /fi为表示接收缓冲区内有字符variant_inp=m_ccomm.getinput(); /ts 缓冲区消息safeanay_inp=variant_inp; /变量转换 len=safearray_inp.getonedimsize(); /得到有效的数据长度 for(k=0;k<len;k+)safearray_inp.getelement(&k,rxdata+k);for(k=0;k<len;k+) /将数组转换为cstring型变量char b
56、t=*(char*)(rxdata+k); 字符型strtemp.format("%cn,bt); 将宁符送入临时变量strlemp存放 m_receive+=strtemp; /加入接收编辑框对应字符串cstring temp=(”rrt); /显示完成后要自动换行m_receive+=temp;updatedata(false); 更新编辑框内容5. 参数设置模块对数据交换过程屮的波特率、数据位、停止位、奇偶校验位等通信参数进 行设置,点击【确定】按钮,设置成功;点击【退岀】按钮,取消设置,返冋 主界面。参数设置模块流程图如图4-13所示,实现应用程序具体功能的代码如 下:图413通信参数设置流程图void cmydlg: onset()/ todo: add your control notification handler code herecsetcs sc;sc.m baund = m baund;sc.m databit = m databit;sc.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省八年级数学下册19矩形菱形与正方形19.1矩形19.1.1矩形的性质听评课记录1新版华东师大版
- 小学二年级数学口算竞赛试题
- 人教版地理七年级上册《3.3降水的变化与分布》听课评课记录
- 北师大版历史八年级下册第14课《各民族的团结与发展》听课评课记录
- 小学六年级数学下册《面积的变化》听评课记录
- 人教版七年级道德与法治七年级上册听课评课记录:第一单元成长的节拍第三课 发现自己第一课时认识自己
- 公司员工廉洁自律协议书范本
- 二零二五年度汽车修理厂汽车美容与维修一体化服务合同
- 二零二五年度网络剧导演专项聘用合同
- 二零二五年度肉类产品食品安全监管合同协议
- 湖南省怀化市2024-2025学年九年级上学期期末化学试题(含答案)
- “5E”教学模式下高中数学教学实践研究
- 《医学影像检查技术学》课件-踝X线摄影
- 急救药品知识培训内容
- 人教版初中英语单词大全七八九年级(带音标) mp3听力音频下载
- 电工基础知识(全套)
- 四川省成都市成华区2024年中考语文二模试卷附参考答案
- 《西兰花全程质量安全控制技术规范》
- 寒假日常生活劳动清单及评价表
- 2024-2030年中国豆腐市场发展趋势展望与投资策略分析报告
- 电力线路维护巡查服务合同
评论
0/150
提交评论