毕业论文_基于C++的RS232通信协议模拟终端_第1页
毕业论文_基于C++的RS232通信协议模拟终端_第2页
毕业论文_基于C++的RS232通信协议模拟终端_第3页
毕业论文_基于C++的RS232通信协议模拟终端_第4页
毕业论文_基于C++的RS232通信协议模拟终端_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、基于c+的rs232通信协议模拟终端analog terminal the rs232 communicationprotocol based on c+随着科技的迅猛发展,通信技术已经成为社会经济、环境、生活、工作、学习不可 缺少的一部分。通信的方式多种多样,以何种方式实现通信主要取决于通信设备。在工 业控制系统和实验室中,曲于串行通信具有实现简单、使用灵活方便等优点,串行通信 是计算机与外部设备进行数据通信时经常使用的方式之一。围绕串行通信技术,本文主要介绍了串行通信接口rs232标准串口,阐述了 rs232串行通信基木原理和crc校验,通过vc界面编程实现串行通信。传输过程屮 通过crc

2、对数据进行校验。在研究rs232串行通信原理屮,主要介绍了 rs232标准协议、串口以及串口通信 原理。详细的分析了几种主要的通信参数。按照其工作原理及rs232串口的标准协议最 终采用串行全双工的方式实现其通信,本文屮的接口使用的是计算机上的usb 口。在软件实现方面,本设计在比较了多种方法之后,最终选择了基于c+的mfc应 用程序。利用mscomm activex串行通信控件来实现串行通信。文中详细地介绍了 vc 下的windows平台先进的activex控件技术,即mscomm控件等。最终实现了两台 pc间的串行通信。串行通信以其成本低、结构简单等优点被人们广泛应用。用rs-232协议实

3、现两台 pc机间的串行通信为以后实现更加复杂的设备间通信奠定了基础。关键词:rs232标准;串行通信;c+; crc校验abstractwith the rapid development of science and technology, communication technology has become an indispensable part of social economy,environment jiving and learning. there are many kinds of communication modes.the selection of communic

4、ation 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 serial commun

5、ication 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 data.in the study of rs232 serial communication principle,

6、 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 ,the inte

7、rface 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 control tec

8、hnologymscomm 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 more complex

9、communication.keywords: motor; rs232protocol; serial communications; c+; crc cyclic redundancy check摘 要iiabstractill第1章绪论1l1课题的研究意义11.2研究现状及发展趋势2121 rs232串行通信的研究现状21.2.2 rs232串行通信的发展趋势21.3本文主耍的研究内容2第2章串行通信基木原理42rs232通信协议42rs232标准42.1.2 rs232 接 口42.2串行通信52.2.1串行通信基本原理52.2.2串行通信参数62.2.3串行通信的分类72.3串口的调

10、制8231串口连接82.3.2串口调试92.4本章小结10第3章crc校验113.1 crc校验原理113.1.1 crc校验码的基木原理113j.2crc校验码权的形式123.2 crc校验的实现133.3木章小结13第4章 软件的实现及其测试144开发工具概述144.1.1 windows 编程与 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致 谢错误!未定义书签。第1章绪论1.1课题的

11、研究意义在发展如此迅速的信息化时代,随着计算机的普及和信息技术的发展,形 成了对信息的获取传送处理利用的完整技术体系,并在此基础上形成了通信技 术,它应用在生产、医疗、教育、生活等多种领域,成为现今社会生存和发展 不可或缺的技术。随着通信技术的不断创新和发展以及计算机网络和多微机系统的广泛应 用,usb通信技术的发展如此迅速,尽管如此,然而串口通信技术以其实现简 单、使用灵活方便、数据传输可靠等优点并未面临被淘汰,反而在通信领域中 一直都被人们广泛的应用。它主要被广泛应用在工业控制生产和实验室等重要 领域。vc+是新一代面向对象的可视化开发工具,作为一个主流的开发平台一直 深受编程爱好者的喜爱

12、,提供了良好的界面设计资源,是当下图形开发的一个 比较重要的技能和手段,window图形界面编程就是vc+编程开发的经典展现 zo windows 图形界面编程下的 mfc,全称是 microsoft foundation classes, 它是win32屮的应用程序,日前win32屮基于vc+6.0的串口通信程序一般可 以用两种方法实现:一是利用mscomm activex串行通信控件;二是使用 windows api通信函数。其中windows平台先进的activex技术对串口编程不 再需要处理繁琐的细节。利用已有的activex控件技术,只需要编写少量的代码, 就可以轻松高效地完成通信任

13、务。这样做会给编程者省去很多的代码工作量。伴随着科学技术的不断创新与现代化生产过程中智能化、自动化程度的不 断提高,越来越多的综合过程和控制系统需要开发自身的监测控制平台与数据 处理采集,利用windows编程技术开发这样的应用程序时,其屮要面临的最关 键的问题是与外围监控设备连接与通信。与外围监控设备通信实际上是计算机 与计算机或计算机与终端机之间的数据传递,它可以采用串行通信和并行通信 两种通信方式。由于串行通信方式具有使用线路少、成本低、特别是在远程传 输时,避免了多条线路特性的不一致而被广泛采用。所以现在大量的智能仪器、 工控设备、实验研究设备或数据采集模块都带有rs232 $行通讯接

14、口,通过相 应的通讯协议和串口通讯程序,可以将测试、采集的数据传输到上位工控机, 以满足各种形式后续数据处理的要求。同时整个监控系统会根据系统运行情况 通过串口向监控设备发送指令,调节设备的运行参数等使得生产过程平稳进行。 所以研究rs232串行通信意义非常重大。1.2研究现状及发展趋势121 rs232串行通信的研究现状h前,串行通信在各类领域中都得到了广泛的应用,同时它还具有较高的 性价比和传输可靠性等优点。rs-232被定义为一种在低速率串行通信屮增加 通信距离的单端标准。串行通信中的串口应用始于1960年,然而rs-232的初 始版本于1969年才得到认证,认证的版本号为rs-232c

15、,在这z前有rs-232a. rs-232b这两个版本。rs-232标准主要适用于通信设备,它主要采取不平衡传 输方法,即所谓的单端通信。近年来,串行技术与连接设备都得到了很大的发 展,串口设备在设备电缆、工业控制和软件应用程序屮得到了大量的应用,毫 无疑问,串行连接技术仍然是工商业、医疗、教育和实验室等领域中所应用的 广泛标志。1.2.2 rs232串行通信的发展趋势rs-232 议自1960年形成,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.1rs232通信协议2.1.1 rs232 标准rs-232标准(协议)(ansi/e1a232标准)的全称是eia-rs-232c标准, 其中eia代表美国电子工业协会,rs代表推荐标准,232是标识号,c代表rs-232 的修改次数。rs-232c标准是美国eia (电子工业联合会)与bell等公司一起 开发的1969年公布的通信协议【2】。rs232协议一共有25条信号线,其中包扌舌一个主通

18、道和一个辅助通道,人 多数情况下主要使用的是主通道,尽管有如此多的信号线,但是对丁一般双工 通信,仅需要其中儿条信号线就可实现数据的传送,如一条发送线、一条接收 线和一条地线。它适合于数据传输速率在020000b/s范围内的通信,即为每秒 50、70、100、150、300、600、1200、2400、4800、9600、19200 波特。这个标 准对串行通信接口的有关问题都作了明确规定。由于通信设备厂商都生产与 rs-232c制式兼容的通信设备,因此,它作为一种标准,口前已在微机通信接口 中广泛采用,例如在ibm pc机上的com1、com2接口,就是rs-232c接口。 它规定连接屯缆、机

19、械、电气特性、信号功能及传送过程等。同时,由于rs-232 标准具有连线简单、通讯距离长等优点,目前也广泛应用于微型计算机系统、 工控机和大型设备系统中。2.1.2 rs232 接口rs232标准是按负逻辑定义的,它的电平在一5一15vz间,“(t电平 在+5+ 15 vz间。rs232接口是标准串行接口,其通讯距离小于15 m,它的 传输速率小于20 kb/so rs232串行接口属于个人计算机(pc)及电信应用领 域中最为成功的串行数据标准。是目前pc机与通信工业中应用最广泛的一种串 行接口。现在的计算机一般至少有两个串行口 c0m1和com2,新一代的计 算机主要以9引脚的d型口接出所有

20、的rs232通信信号及控制线(有的计算机 的串口为25引脚)。在rs232的通讯标准中是以一个25针的接口来定义的,25针的接口在早期的计算机如pc或xt机型上广泛使用,但在at机以后的机 型上,实际均采用了 9针的简化版接口应用,现在所说的rs-232通讯均默认为 9针的接口。现在大多数个人计算机几乎都没有串口,大多采用usb接口,所 以要实现个人计算机与外围设备进行通信大多采用rs-232转usb接口 ors-232 9针通讯的接口图如图21所示。图2-19针通讯接口2.2串行通信2.2.1串行通信基本原理两个设备之间交换数据的过程我们称之为通信。从同时传输的数据位数 来分通信方式可以分为

21、串行通信(serial)和并行通信(parrel) o并行通信中所 传送数据的各位同时发送或接收。串行通信中所传送数据的各位按顺序一位一 位地发送或接收。两种基本通信方式如图2-2所示:$行通信并行通信图2-2两种基本的通信方式从上面的图中可以看到,并行通信成本高,并须使用多条通信线,而串行 通信只需使用两条通信线就可以完成两个设备间的数据交换,人人降低了通信 成本,串行通信又以其串行线间的干扰小得到了广泛的应用。串行通信大多数用于windows开发的应用程序与外围数据源设备之间的数 据交换。串行通信是通过串行端口实现的。串行端口的本质功能是作为cpu 和串行设备间的编码转换器。当数据从cpu

22、经过串行端口发送岀去时,数据格 式由字节数据转换为串行的位(byte)o在接收数据时,数据格式由串行的位(bit) 被转换为字节数据。2.2.2串行通信参数串行通信在数据交换过程屮,要对几个重要的通信参数进行设置,其屮包 扌舌波特率、数据位、停止位、奇偶校验位等。(1) 波特率所谓波特率就是每秒屮传送的二进制位数,其单位是bps (bits per second), 用来描述数据的传送速率,是衡量串行通信数据传输速度快慢的垂耍指标。国 际上对波特率规定了一个标准系列:110bps、300bps、600bps、1200bps、1800bps> 2400bps> 4800bps>

23、 9600bps> 14.4kbps> 28.8kbps> 33.6kbps> 56kbps。例如: 9600bps,是指每秒传送数据9600位,其屮包含字符的数位和其它必须的数位。 串行接口电路的接收波特率和发送的波特率可以设置,要求接收方的接收波特 率必须与发送方的发送波特率是一致的。在串行通信屮,通信线上所传输的字 符数据(代码)是逐位传送的,一个字符由若干位组成,所以每秒钟所传输的 波特率和字符数(字符速率)是完全不同的。有时也用“位周期”来表示传输速率, 位周期是波特率的倒数。(2) 数据位数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际 的数

24、据不会是8位的,标准的值是5、7和8位。如何设置取决于传送的信息。 数据位通常为58位,它紧跟在起始位z后,是被传送字符的有效数据位。传送 时先传送字符的低位,后传送字符的高位。数据位的位数可以有硬件或软件设 备进行设置,以满足设备间数据交换的需耍。(3) 停止位停止位一般为1、1.5和2位,用于表示单个包的最后一位。停止位不仅仅 是表示传输的结束,并且提供计算机校正时钟同步的机会,因为数据是在传输 线上定时的,并且侮个设备都有其自己的时钟,很可能在通信中要进行数据交 换的两台设备间出现小小的不同步,设置停止位就是为了避免其屮的小小的不 同步。停止位的位数的设置可以由设备的软件设置,停止位的位

25、数越多,不同 时钟同步的容忍程度越大,但是数据传输率相应地也会越慢。(4) 奇偶校验位在串行通信中奇偶校验是一种简单的检错方式,奇偶校验位仅占一位,用 于进行奇校验和偶校验,同时也可以无校验位。对于奇校验和偶校验,串口会 设置校验位,是数据位后而的一位,用一个值保证传输的数据有偶个或考奇个 逻辑高位。例如,如果数据是001,那么对于奇校验,校验位是0,。如果是偶校 验,校验位是1。这样使得接收设备能够知道一个位的状态,有机会判断是否有 噪声干扰了通信或者传输和接收数据是否发生了不同步。2.2.3串行通信的分类串行通信又可以分为同步吊行通信和异步串行通信两类。同步通信是一种在发送端发送一个抑制载

26、波的双边带信号,而在接收端恢 复载波,再进行检波的通信方式。是按照软件识别同步字符來实现数据的发送 和接收。它是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。 信息中含有若干个数据字符。它们均由数据字符、crc即同步字符和校验字符 组成。因为恢复的载波与被接收的信号载波同频同相,故取名为同步通信,也 称抑制载波双边带通信。异步通信数据通常以字符或者字节为单位组成字符帧传送,字符帧由发送 端逐帧发送,通过传输线被接收设备逐帧接收。异步通信通常有两个非常重要 的指标:即字符帧格式和波特率。发送端和接收端可以由各自的时钟源来控制 数据的发送和接收,这两个时钟源彼此独立,互不同步,接收端检测

27、到传输线 上发送过来的低电平逻辑”0”(即字符帧起始位)时,确定发送端已开始发送数 据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。 异步通信有自己的的缺点,其缺点是它在通信时的传输效率较低。当然它也具 有自己独特的优点,其优点就是它的通信设备简单、便宜。2.3串口的调制2.3.1串口连接现在大多数计算机外用接口都是usb 口,外用接口很少有串口的,并且现 在的个人计算机的串口大多都是简型的9针串口。所以要想通过串行通信实现 与外用设备数据交换,必须用usb转rs-232 9针串口转换线。9芯管脚图如图 2-3所示。、00 000 0 000图23 9芯管脚图表219针管脚各

28、引脚名称功能图九针串口针号缩写功能说明信号來源1dcd功能说明调制解调器2rxd接收数据调制解调器3txd发送数据pc4dtr数据终端准备pc5gnd信号地6dsr数据设备准备好调制解调器7rts请求发送pc8cts请求发送调制解调器9dell振铃指不调制解调器hl前,市场上使用的串口有9针管脚的还有25针管脚的。在rs-232的通 讯标准中是以一个25针的接口来定义的,并且在早期的计算机中,如pc机或 xt机型上得到了广泛地使用,但是在at机以后的机型上,实际上均采用了 9 针管脚的简化版木应用,现在所说的rs-232通讯均默认为9针的接口。图23 显示了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 u,即完成了初步的安装。打开设备管 理器,看一卜所插入的转换线占的是哪个串口,因为在接下来调试串口要用到。串口调试助手是一个专门用來调试串口程序的功能软件,要想测试串口是 否可用,应先打开软件,选择串口号,打开串口,在发送区输入内容,点击发 送按钮,若在接收区中有所发送的内容,则证明此串口可用。2.4本章小结本章从原理上介绍了串行通信的基木原理,详细的阐述了 rs232标准协议 接口和与串行通信相关的一些知识。介绍了通信参数与串行通信的分类。为下 文编写windows应用程序实现两台pc机进行数据交换提供了基础。第3章crc校

31、验3.1 crc校验原理3.1.1 crc校验码的基本原理在早期的通信中,由于通信技术不够可靠(不可靠性的来源是通信技术决 定的,比如电磁波通信时受雷电等因素的彩响),这样不可靠的通信就会带来“确 认信息'的麻烦,造成一些事情的延误等。为了避免这一弊端,在进行数据交换, 通信的过程屮,对通信的可靠性检查就需要校验,校验是从数据木身进行检查, 它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可 靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复方-如早期一样日前在通信系统的数据传输过程屮,由于信道屮各种复杂因素 的影响,使传输的信号受到干扰,造成传输过程中误码的出现

32、。接收方为了检 查所接收的数据是否有误码,可采用多种检测方法。差错控制编码是口前数据 传输过程中普遍采用的一种提高数据通信可靠性的方法,而crc是一种在实际 通信中应用很广泛的差错控制编码,具有很强的检错能力。crc (cyclic redundancy check)循环冗余校验码是数据通信领域中最常用 的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。crc 循环兀余校验码的基本原理是任意一个由二进制位串组成的代码都可以和一个 系数仅为0和t取值的多项式一一对应。例如:代码101011对应的多项式为 x'+ x'+x+l,而多项式为x6 + x5 + x2+l对

33、应的代码110010k crc校验 码是在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种 编码也叫(n, k)码。crc校验码的生成借助于多项式除法,其余数为校验字段。其中发送方发 出传输字段,传输字段由两部分组成的,分别为信息字段和校验字段。接收方 使用和同的生成码进行校验,若接收到的字段或生成码(二进制除法)如果能 够除尽,则说明在通信过程屮,数据交换期间未受到其他因索的干扰,消息收 发成功。3.1.2 crc校验码权的形式crc校验码有很多种权的行式,使用哪一种形式是根据通信双方共同制定 的“规则”而定的,其屮各种常用权的形式如下所示:c/?c8 = x8 + x5+x4

34、 + 1(3-1)crc - ccitt = xi6 + x,2 + x5+1(3-2)crc16 =+ +灯 +1(3-3)crc2 = xxl + xn +x3 + x? +1(3-4)crc32 = x 32 +x 26 + x 23 + x 22 +x16+x12+xh+x10 +x8 + x7+x5+x4+x2+x+l(3-5)以其'i' crc-ccitt形式为例。图3-1说明了 crc校验中crc值是如何 计算出来的,体现的多项式止是式(3-5) o从把数据移位开始计算,将数据位 (从最低的数据位开始)逐位移入反向耦合移位寄存器。当所有数据位都这样 操作后,计算结

35、束。此时,16位移位寄存器屮的内容就是crc码。图3-1屮 x5代表bit5, 代表bitl2, 1是代表bito, x托比较特别,是指移位寄存 器移入的数据。串联商图3-1生成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方向,调 用win 32 api函数,主要是利用c语言來实现软件的功能与编程;另外一种方 法是c+对sdk函数进行包装,如vc的mfc (微软基础类库

37、),bob的owl 等。其屮使用mfc直接编写提供大量预先编好的类和支持代码或使用mfc和 向导(wizards)编写,用appwizard来生成windows应用程序框架。本次软件程序设计功能的实现主要利用windows编程中mfc (利用c+语 言)。mfc提供了构造windows应用程序的框架,它不仅为应用程序建立标准 的结构,还为其提供了标准的图形用户界面如菜单栏、工具栏、状态栏等,开 发人员只需要在此基础上添加针对特定应用的代码即可。使用此应用程序框架 有很多优点,如其应用程序代码小,运行速度快,并且此应用程序提供的工具 也降低了编码的难度等。windows应用程序的框架主要有两种类

38、型,一种是基于对话框的应用程序框 架,另外一种是基于文档、视图结构的应用程序框架。平人家所见到的人多数 windows应用程序均属于这两种框架。mfc的全称是microsoft foundation classeso 是微软把windows api 进行封 装的类库,该类库以层次结构组织起来,其屮封装了大部分windows api函数和 windows控件191。1989年微软公司成立application framework技术团队,名为afx 小组,用以开发c+而向对彖t具给windows应用程序开发人员使用。启用mfc 编码可以使windows程序员能够利用c+面向对象的思想进行编程,用

39、好的类作 为标准,减少代码的编写量。4.1.2串行通信控件mscomm口前,以win 32下的mfc应用程序为主要框架,基于vc+的常用串行 通信编程一般可以用两种方法实现:一种是使用windows api通信函数。虽然 在windows f win32api提供了使用文件操作方式的函数进行串口操作的方法, 但是在编程实现上还是比较复杂。其余一种是利用mscomm activex串行通信 控件。windows平台先进的activex技术利用己有的mscomm activex控件, 只需要编写少量的代码,就可以轻松高效地完成任务,使得对串口编程不再需 要处理烦琐的细节。这样程序员就不需要花费大量

40、吋间去了解复杂的api函数, 只需要利用mscomm控件就可实现串口编程。所以,木次实现两台pc间的通 信使用的就是mscomm控件。4.2程序的主要功能实现两台pc机之间的通信的应用程序,主要实现了密码登陆、参设设置、 参数显示、打开串口、关闭串口、数据发送、数据接收等功能。主耍功能框图 如图41所示。主函数vvvvvv密码登录参数设置打开串口关闭串口接收数据发送数据图41主要功能框图应用程序主要实现的功能如图41所示的主要功能框图,此应用程序的总体 程序流程图如图42所示。图42程序流程框图使用此应用程序时,需要有正确的用户名和密码才能登录到此软件的主界 面,登录到主界面后,要想实现两台p

41、c间的通信则需要选择可用的串口号并且 传输参数要一致,其中包括波特率、数据位、停止位、奇偶校验位等,只有设 置对的参数才能实现数据交换的功能。在发送接收数据过程屮需要打开串口。 通信结朿后,关闭打开的串口。能够发送单个或多个数据。能够接收和显示多 个数据。程序流程图如图32所示。4.3程序运行平台在程序设计时,原计划使用vs2008软件,但是曲于电脑、操作系统等各种 原因,就改用vc+ 6.0这个软件。4.4详细设计4.4.1建立工程要实现通信,首先应先建立工程,即新建基于win32的mfc应用程序。首 先打开vc+6.0软件,建立基于对话框的mfc应用程序。并将这个应用程序命 名为通信。然后

42、在将基于对话框选屮(如图4-3),直接下一步即可,最后直到 完成。图43建立基于对话框应用程序过程图按照如上所示的方法步骤,建立win32下的mfc应用程序工程,应用程 序工程名为“通信”,最后点击完成按钮,就会出现mfc应用程序初始界面如图 4-4所示。取消todo:在这里设置对话控制。图44应用程序最初界面4.4.2界面功能实现1 .登录界面登录界而的设计除了应用mfc中的控件和丁具外,要想实现其用户名和密 码的验证功能还利用了数据库的知识。木次登陆界面使用的数据库是微软的 access数据库。access数据库是一个小型的数据库,使用起来非常的灵活、方 便。对access数据库的连接与操

43、作有很多种方法,例如在asp屮建立对access 数据库的连接、使用recordset对彖操作access数据库、使用sql指令操作数 据库、使用dsn连接access数据库等。其中使用dns连接access数据库方法 中,在定义dsn的时候,就已经指定好了数据源需要的odbc驱动程序,也指 定好了数据库文件的实际路径和名字,我们在程序中,只需要引用预先定义的 数据源名dsn即可。首先,启动microsoft office access,建立access数据库,命名为demoo 1, 然后在数据库中创建一个表,命名为puser,在表pusei中输入序号(userid)、 用户名(usernam

44、e)和密码(userpwd),将这个数据库保存。最后为access数 据库demoo 1建立数据源,利用odbc驱动。数据库和数据源建立完成后,开 始用mfc建立登陆界面。数据库中用户名和密码如图45所示。二 puseruserid 白username userpwd us erable 添加新字段1富卓5212142zz3cc789图45数据库屮用户名和弱密码运行应用程序时,若输入了错误的用户名或密码,则系统会提示输入错误。 若输入用户名和密码正确,即与access数据库表login内容相一致,点击登录按 钮,出现提示正确,点击确定按钮应用程序的界面会由登陆界面跳转到主界面, 开始进行数据交

45、换。登陆界面如图46所示。图46登录界而2 .主界面主界面是整个应用程序的主体,大致可划分为三部分,有接收区、发送区 和设置区。接收区由静态文本框和编辑框组成;发送区同样也是由静态文本框 和边界框组成;设置区由组合框、按钮和静态文本框组成。完整的主界面如图 47所示。图4-7主界面3.参数设置界面完成两台pc机间的串行通信(数据交换),必须保证两个串口的通信参数 一致,这样就需要将两个应用程序的通信参数重新设置,通信参数包括波特率、 数据位、停止位、奇偶校验位等。相应的通信参数设置完成后,点击【确定】 按钮,应用程序则会再次跳转到主界面(数据收发界面),若想取消设置则点 击収消按钮,参数设置界

46、面关闭,冋到主界面。界面的具体情况如图48所示。图设置界而4.4.3模块分析1 用户名密码登录模块在登录界面下,在编辑框中输入用户名和密码,单击界面屮的【登录】按 钮,可以验证用户名密码输入是否正确,若正确登录,程序提示“登陆成功,欢 迎使用!",然后登陆界面关闭显示主界面,若输入错误则程序提示“密码用户名 错误,请重新输入!需要重新输入和验证,验证通过后才可以登录。实现该 功能的程序流程图如图49所示,实现该功能的程序代码如下:图49用户名密码登录模块流程图void cmylogin:onbnclickedok()/ todo: add your control notificat

47、ion 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=,%s,n,m_username,m_us erpwd);m_user.open(crecordset: snapshot,null,crecordset:none);if(

48、m_user.iseof()/密码用户名不一致m_user.close();afxmessageboxc'jh户名、密码错误,请重试! ”);return;elsem_user.close();afxmessagebox(”登录成功,欢迎使用! ”);cdialog:onok();catch(cdbexception* e)e->reporterror();return;2 应用程序初始化实现先显示登陆界而后主界而,利用mfc屮的模式对话框在初始化函数屮 来实现,若串口是打开的则关闭串口,同时串口参数的设置也是在初始化函数 屮设置实现的。初始化的程序流程图如图410所示。具体程序

49、代码如下面所示:图4j0初始化流程图bool cmydlg:oninitdialog() cdialog: :oni nitdialogo;/todo: add extra initialization herecmylogin my;my.domodal();/显示登录界而if(m_ccomm.getportopen() /如果发现串口本來是打开的,则关闭串口 m_ccomm.setportopen(false);m_ccomm.setcommport(4); /选择com4端 口m_ccomm.setinputmode( 1); 输入方式为二进制方式 m_ccomm.setinbuffer

50、size( 1024); 设置输入缓冲区 m_ccomm.setoutbuffersize(512); 设置输出缓冲区 m_ccomm.setsettings("9600,n,8,l ”);波特率,无校验,个数据位,个停止位 return true; / return true unless you set the focus to a control3. 设置、打开和关闭串口功能结束图411设置、打开和关闭串口流程图串行通信是通过串口实现数据交换的,但是pc机上有不止一个串口,需耍 我们设置进行串行通信端口号,并将串口打开,通信结束后将串口关闭】。程 序流程图如图411所示,实现其

51、功能代码如下: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_comn = m_comn;m_ccomm.setcommport(m_comn4-1); 设置串口号 m_ccomm.setlnbuffersize( 1024); 接收缓冲区 m_ccomm.setoutbuffersize( 1024);/ 发送缓冲区 m

52、_ccomm.setinputlen(0);/设置当前接收区数据长度为,表示全部读取 m_ccomm.setinputmode( 1);/以二进制方式读写数据m_ccomm.setrthreshold( 1);/接收缓冲区有个及个以上字符时,将引发 接收数据的oncommmscom m事件if( !m_ccomm.getportopen()m_ccomm.setportopen(true); 打开串口m_ccomm.setrthreshold(l); /每当接收缓冲区有个字符则接收串口数据 m_ccomm.setinputlen(0); /设置当前缓冲区长度 m_ccomm.getinput(

53、); 预读缓冲区以淸除残留数据elseafxmessagebox(”打开端 口失败! ”,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 rxdata512; 设置byte数组cstrin

55、g strtemp;if(m_ccomm.getcommevent()=2) /fi为表示接收缓冲区内有字符variant_inp=m_ccomm.getinput(); /读缓冲区消息 safearray_inp= vari an t_i n p; /变量转换 len=safearray_inp.getonedimsize(); 得到有效的数据长度 for(k=0 ;k<len ;k+)safearray_inp.getelement(&k,rxdata+k);for(k二0;kvlen;k+) /将数组转换为cstring型变量char bt=*(char*)(rxdata+

56、町;/字符型strtemp.format(n%c",bt); /将字符送入临时变量strtemp存放 m_receive+=strtemp; /加入接收编辑框对应字符串cstring temp=(nrnn); 显示完成后要口动换行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.m_jiaoyan = mjiaoyan;sc.m_stopbit = m_stopbit;需要重新配置if(sc.domodal()=idok) /配置对话框是“确定”按钮按下, 端口m_ccomm.setportopen(false);cstring conf;switch(m_bau

温馨提示

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

评论

0/150

提交评论