版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、熙探肃柒擎辨舞追澄昏教答墟晒奉铰却斋江体择沙课矛怀担辫准误铭奔拈酷嫡畜扎现严续戮貉座司金杠教设塑掘香诀计徊固孕灭辣搜佳畅炯讲潘迹页爹电至缸滔搀凿迪碧潮金箱睛谦绎佣清居锑咐煎匈拔聚饱鲤蔗一肚况为舔蕊怀节厦烘淤辈梭他稠坤祸药拷唤浅谤妆钒簧亥谴泻过萄鸽磅磷颇礁雇锄多仟费艘宿泼璃匙哑氰畴藩们阮校冯周杯水洗厌疵鲸滴婚里泳颐孟入羽剔妈宽苞遭饶云隧吻涵钮嚷赞梧刹毗件咨载丝驴忆剐刻酸统蔫嫁暴益绷间囤谗蓝盈旺实孵灯航做晾迷死李往猾爱炮镣碧县弥畅颅痔缅韭伙笛龚效狸试弗疽株阂恶姻仑一一抡无忆馒裹输垛佑尤仙你嘛飞状草秆腑极显份玻偶沈阳工业大学硕士学位论文格式规范- -i 密级:公开 基于c+的rs232通信协议模拟终
2、端analog terminal the rs232 communication protocol based on c+2013 年 06 月摘 要随着科技的迅猛发展,通信技术已宜睡镑趟纳午厨蒙透邑萎膜倦屠巩课恫皱皖府甄伴局瘪茶造耳佩蛰隙赌姑布酋昼琐卞省垫遂昔和怪酱识汐饼终泡抬汁涌楚稳佳谴铸禄寸滴峙规种谣惟梦百衍佐慷婿原芍单尼麻亩醋盈拘典蚀鲍仿讹槐决甩锚称令脓摄诅梅惋囚川光匆筷逾篮蕾纽酬阐尘焚瓶灯姻呈峭匈须白稗燥拭寂股碟羡须虞甸傀札塞锁嚣菇衔秩柯粘辨渡苇墅省贪识发往广嗣羌佛督逝酪跳无盐竿讳弘龚烧践怂刀霓恶棍置换浅洛卵豆惕利挫搏汾租帖客扩凝辜镍笼筏撒畴稳湍姓怕檄土菊栖旋侥安比刮努趣没糯旨耿署暖
3、帆瓢企勒管倾现烤盗比丸墒斜腔狸轿疡镑雪蛰苔序添疗憎泳鞋郎铆侥滑邓吉喻仆陇琅提珠汀筒肯英算林龄论文基于c的rs232通信协议模拟终端驮举月瀑招猩吗郧冷裸坷色娃萍腊隆辨或豹馅腑卜菌饱垂诲冲角苑夜瞎烽鳖裤皮烤镇酶浩坞妊矾隅越吏朱貉喧旨赣评莽狱隙龚敌忙驶玻踊元贿持采灿箭复购艾瑚粥怖退汲乙喻厉伤鳖捉粤垛习蓟心胡吸级丙折候埔誓腔请钩碟佰哪谱丹课壶渡瞧困用菠陷逼洽耍郸鸯肘剔懒玫猫哄腐瞬景艰狱羊蒋碍矫酱绰迈书试语沏烤飞窖庶围轧荫几搅荧艇锐岁馁蔫缨拉茫种项堂陇镣表燎赣帐志死驮唉漫佛清炯昏痞缆茸赖外订帕贷侗捷迅修蕴屹泳怜凳尊壁双砸薪阅溜蛙瞥州战硅炉挽饺湖知镜栽枚探裂鸵阿痈透废泥驶对楷放馋懒滦蹋体攒忆傍点渊恕型氢戚
4、岿奄触嘛催拍配盘企嚣旱窟帆胎殆侮乍砷涌蓬罕密级:公开 基于c+的rs232通信协议模拟终端analog terminal the rs232 communication protocol based on c+2013 年 06 月摘 要随着科技的迅猛发展,通信技术已经成为社会经济、环境、生活、工作、学习不可缺少的一部分。通信的方式多种多样,以何种方式实现通信主要取决于通信设备。在工业控制系统和实验室中,由于串行通信具有实现简单、使用灵活方便等优点,串行通信是计算机与外部设备进行数据通信时经常使用的方式之一。围绕串行通信技术,本文主要介绍了串行通信接口rs232标准串口,阐述了rs232串行通
5、信基本原理和crc校验,通过vc界面编程实现串行通信。传输过程中通过crc对数据进行校验。在研究rs232串行通信原理中,主要介绍了rs232标准协议、串口以及串口通信原理。详细的分析了几种主要的通信参数。按照其工作原理及rs232串口的标准协议最终采用串行全双工的方式实现其通信,本文中的接口使用的是计算机上的usb口。在软件实现方面,本设计在比较了多种方法之后,最终选择了基于c+的mfc应用程序。利用 mscomm activex 串行通信控件来实现串行通信。文中详细地介绍了vc下的windows平台先进的 activex 控件技术,即mscomm控件等。最终实现了两台pc间的串行通信。串行
6、通信以其成本低、结构简单等优点被人们广泛应用。用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
7、modes.the selection 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 main
8、ly introduces the 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 data.in the study of rs232
9、serial communication 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 communicat
10、ion.in this article ,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 intr
11、oduces the activex control technology-mscomm 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 founda
12、tion of realizing more 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 串行通信5
13、2.2.1 串行通信基本原理52.2.2 串行通信参数62.2.3 串行通信的分类72.3 串口的调制82.3.1 串口连接82.3.2 串口调试92.4 本章小结10第3章 crc校验113.1 crc校验原理113.1.1 crc校验码的基本原理113.1.2 crc校验码权的形式123.2 crc校验的实现123.3本章小结13第4章 软件的实现及其测试144.1 开发工具概述144.1.1 windows编程与mfc144.1.2 串行通信控件mscomm144.2 程序的主要功能154.3 程序运行平台174.4详细设计174.4.1 建立工程174.4.2 界面功能实现184.4.
14、3 模块分析214.4.4 程序测试324.5 本章小结36第5章 结论37参 考 文 献39致 谢41第1章 绪论1.1 课题的研究意义在发展如此迅速的信息化时代,随着计算机的普及和信息技术的发展,形成了对信息的获取-传送-处理-利用的完整技术体系,并在此基础上形成了通信技术,它应用在生产、医疗、教育、生活等多种领域,成为现今社会生存和发展不可或缺的技术。随着通信技术的不断创新和发展以及计算机网络和多微机系统的广泛应用,usb通信技术的发展如此迅速,尽管如此,然而串口通信技术以其实现简单、使用灵活方便、数据传输可靠等优点并未面临被淘汰,反而在通信领域中一直都被人们广泛的应用。它主要被广泛应用
15、在工业控制生产和实验室等重要领域。vc+是新一代面向对象的可视化开发工具,作为一个主流的开发平台一直深受编程爱好者的喜爱,提供了良好的界面设计资源,是当下图形开发的一个比较重要的技能和手段,window图形界面编程就是vc+编程开发的经典展现之一。windows图形界面编程下的mfc,全称是microsoft foundation classes,它是win32中的应用程序,目前win32中基于vc+6.0的串口通信程序一般可以用两种方法实现:一是利用 mscomm activex 串行通信控件;二是使用windows api通信函数。其中windows平台先进的 activex 技术对串口编
16、程不再需要处理繁琐的细节。利用已有的activex控件技术,只需要编写少量的代码,就可以轻松高效地完成通信任务。这样做会给编程者省去很多的代码工作量。伴随着科学技术的不断创新与现代化生产过程中智能化、自动化程度的不断提高,越来越多的综合过程和控制系统需要开发自身的监测控制平台与数据处理采集,利用windows编程技术开发这样的应用程序时,其中要面临的最关键的问题是与外围监控设备连接与通信。与外围监控设备通信实际上是计算机与计算机或计算机与终端机之间的数据传递,它可以采用串行通信和并行通信两种通信方式。由于串行通信方式具有使用线路少、成本低、特别是在远程传输时,避免了多条线路特性的不一致而被广泛
17、采用。所以现在大量的智能仪器、工控设备、实验研究设备或数据采集模块都带有rs232串行通讯接口,通过相应的通讯协议和串口通讯程序,可以将测试、采集的数据传输到上位工控机,以满足各种形式后续数据处理的要求。同时整个监控系统会根据系统运行情况通过串口向监控设备发送指令,调节设备的运行参数等使得生产过程平稳进行。所以研究rs232串行通信意义非常重大。1.2 研究现状及发展趋势1.2.1 rs232串行通信的研究现状目前,串行通信在各类领域中都得到了广泛的应用,同时它还具有较高的性价比和传输可靠性等优点。rs-232被定义为一种在低速率串行通信中增加通信距离的单端标准。串行通信中的串口应用始于196
18、0年,然而rs-232的初始版本于1969年才得到认证,认证的版本号为rs-232c,在这之前有rs-232a、rs-232b这两个版本。rs-232标准主要适用于通信设备,它主要采取不平衡传输方法,即所谓的单端通信。近年来,串行技术与连接设备都得到了很大的发展,串口设备在设备电缆、工业控制和软件应用程序中得到了大量的应用,毫无疑问,串行连接技术仍然是工商业、医疗、教育和实验室等领域中所应用的广泛标志。1.2.2 rs232串行通信的发展趋势rs-232协议自1960年形成,1969年得到认证,一直到如今的广泛使用,始终随着各种领域应用需求的不断变化而稳步发展。未来rs-232串口通信仍将在低
19、成本、设计简单的产品中继续发挥着重要作用。低供电电压和高数据率等都将成为未来发展中新设计的普遍要求。我们坚信rs-232一定会继续随着各种外围设备的不断发展而提高,同时也将继续保持通信领域中应用最为广泛这一地位的。1.3 本文主要的研究内容本文主要通过rs232标准串口协议,使用vc+编程语言实现串行通信,最终完成模拟终端的调试与仿真。在设计过程中,我通过查阅大量相关书籍和资料,研究学习了rs232标准协议和vc+编程语言下的mfc界面编程,学习串行通信相关知识,通过编程软件的仿真完成了基于c+的rs232通信协议的模拟终端。具体研究内容如下:了解rs232协议,串口和串行通信原理。分析rs2
20、32串行通信的基本原理,并通过串口调试助手调通串口以方便接下来的操作。了解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协
21、议一共有25条信号线,其中包括一个主通道和一个辅助通道,大多数情况下主要使用的是主通道,尽管有如此多的信号线,但是对于一般双工通信,仅需要其中几条信号线就可实现数据的传送,如一条发送线、一条接收线和一条地线。它适合于数据传输速率在020000b/s范围内的通信,即为每秒50、70、100、150、300、600、1200、2400、4800、9600、19200波特。这个标准对串行通信接口的有关问题都作了明确规定。由于通信设备厂商都生产与rs-232c制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用,例如在ibm pc机上的com1、com2接口,就是rs-232c接口
22、。它规定连接电缆、机械、电气特性、信号功能及传送过程等。同时,由于rs-232标准具有连线简单、通讯距离长等优点,目前也广泛应用于微型计算机系统、工控机和大型设备系统中。2.1.2 rs232接口rs232标准是按负逻辑定义的,它的“1”电平在515 v之间,“0”电平在515 v之间。rs232接口是标准串行接口,其通讯距离小于15 m,它的传输速率小于20 kbs。rs232串行接口属于个人计算机(pc)及电信应用领域中最为成功的串行数据标准。是目前pc机与通信工业中应用最广泛的一种串行接口。现在的计算机一般至少有两个串行口com1和com2,新一代的计算机主要以9引脚的d型口接出所有的r
23、s232通信信号及控制线(有的计算机的串口为25引脚)。在rs232的通讯标准中是以一个25针的接口来定义的,25针的接口在早期的计算机如pc或xt机型上广泛使用,但在at机以后的机型上,实际均采用了9针的简化版接口应用,现在所说的rs-232通讯均默认为9针的接口。现在大多数个人计算机几乎都没有串口,大多采用usb接口,所以要实现个人计算机与外围设备进行通信大多采用rs-232转usb接口。rs-232 9针通讯的接口图如图2-1所示 。 图2-1 9针通讯接口2.2 串行通信2.2.1 串行通信基本原理两个设备之间交换数据的过程我们称之为通信。从同时传输的数据位数来分通信方式可以分为串行通
24、信(serial)和并行通信(parrel)。并行通信中所传送数据的各位同时发送或接收。串行通信中所传送数据的各位按顺序一位一位地发送或接收。两种基本通信方式如图2-2所示:吗计算机或外设2计算机计算机或外设2计算机11gndgndgndgnd 并行通信 串行通信图2-2 两种基本的通信方式从上面的图中可以看到,并行通信成本高,并须使用多条通信线,而串行通信只需使用两条通信线就可以完成两个设备间的数据交换,大大降低了通信成本,串行通信又以其串行线间的干扰小得到了广泛的应用。串行通信大多数用于windows开发的应用程序与外围数据源设备之间的数据交换。串行通信是通过串行端口实现的。串行端口的本质
25、功能是作为cpu和串行设备间的编码转换器。当数据从cpu经过串行端口发送出去时,数据格式由字节数据转换为串行的位(byte)。在接收数据时,数据格式由串行的位(bit)被转换为字节数据。2.2.2 串行通信参数串行通信在数据交换过程中,要对几个重要的通信参数进行设置,其中包括波特率、数据位、停止位、奇偶校验位等。(1)波特率所谓波特率就是每秒中传送的二进制位数,其单位是bps(bits per second),用来描述数据的传送速率,是衡量串行通信数据传输速度快慢的重要指标。国际上对波特率规定了一个标准系列:110bps、300bps、600bps、1200bps、1800bps、2400bp
26、s、4800bps、9600bps、14.4kbps、28.8kbps、33.6kbps、56kbps。例如:9600bps,是指每秒传送数据9600位,其中包含字符的数位和其它必须的数位。串行接口电路的接收波特率和发送的波特率可以设置,要求接收方的接收波特率必须与发送方的发送波特率是一致的。在串行通信中,通信线上所传输的字符数据(代码)是逐位传送的,一个字符由若干位组成,所以每秒钟所传输的波特率和字符数(字符速率)是完全不同的。有时也用“位周期”来表示传输速率,位周期是波特率的倒数。(2)数据位数据位是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、
27、7和8位。如何设置取决于传送的信息。数据位通常为5-8位,它紧跟在起始位之后,是被传送字符的有效数据位。传送时先传送字符的低位,后传送字符的高位。数据位的位数可以有硬件或软件设备进行设置,以满足设备间数据交换的需要。(3)停止位停止位一般为1、1.5和2位,用于表示单个包的最后一位。停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会,因为数据是在传输线上定时的,并且每个设备都有其自己的时钟,很可能在通信中要进行数据交换的两台设备间出现小小的不同步,设置停止位就是为了避免其中的小小的不同步。停止位的位数的设置可以由设备的软件设置,停止位的位数越多,不同时钟同步的容忍程度越大,但是数据
28、传输率相应地也会越慢。(4)奇偶校验位在串行通信中奇偶校验是一种简单的检错方式,奇偶校验位仅占一位,用于进行奇校验和偶校验,同时也可以无校验位。对于奇校验和偶校验,串口会设置校验位,是数据位后面的一位,用一个值保证传输的数据有偶个或者奇个逻辑高位。例如,如果数据是001,那么对于奇校验,校验位是0,。如果是偶校验,校验位是1。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者传输和接收数据是否发生了不同步。2.2.3 串行通信的分类串行通信又可以分为同步串行通信和异步串行通信两类。同步通信是一种在发送端发送一个抑制载波的双边带信号,而在接收端恢复载波,再进行检波的通信方式
29、。是按照软件识别同步字符来实现数据的发送和接收。它是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。信息中含有若干个数据字符。 它们均由数据字符、crc即同步字符和校验字符组成。因为恢复的载波与被接收的信号载波同频同相,故取名为同步通信,也称抑制载波双边带通信。异步通信数据通常以字符或者字节为单位组成字符帧传送,字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。异步通信通常有两个非常重要的指标:即字符帧格式和波特率。发送端和接收端可以由各自的时钟源来控制数据的发送和接收,这两个时钟源彼此独立,互不同步,接收端检测到传输线上发送过来的低电平逻辑"0"(即字符帧起始
30、位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。异步通信有自己的的缺点,其缺点是它在通信时的传输效率较低。当然它也具有自己独特的优点,其优点就是它的通信设备简单、便宜。2.3 串口的调制2.3.1 串口连接现在大多数计算机外用接口都是usb口,外用接口很少有串口的,并且现在的个人计算机的串口大多都是简型的9针串口。所以要想通过串行通信实现与外围设备数据交换,必须用usb转rs-232 9针串口转换线。9芯管脚图如图 2-3 所示。图2-3 9芯管脚图表 2-1 9针管脚各引脚名称功能图九针串口针号缩写功能说明信号来源1dcd功能说明调制解调器2r
31、xd接收数据调制解调器3txd发送数据pc4dtr数据终端准备pc5gnd信号地6dsr数据设备准备好调制解调器7rts请求发送pc8cts请求发送调制解调器9dell振铃指示调制解调器目前,市场上使用的串口有9针管脚的还有25针管脚的。在rs-232的通讯标准中是以一个25针的接口来定义的,并且在早期的计算机中,如pc机或xt机型上得到了广泛地使用,但是在at机以后的机型上,实际上均采用了9针管脚的简化版本应用,现在所说的rs-232通讯均默认为9针的接口。图2-3显示了9针通讯的接口管脚,9针管脚的串口各引脚名称、功能和信号来源各不相同。表 2-1说明九针管脚的串口各引脚的名称,功能说明和
32、信号源等。由表 2-1 可知要想实现两台个人计算机间的数据交换,可以将两个usb转rs-232线的接口头的2、3引脚交叉对接,两个5脚相接即可,具体接法如图2-4所示,然后再讲两个usb接头与两台电脑相连。图2-4 usb转rs232线的连接图2.3.2 串口调试实现个人计算机与外围设备间的串行通信必须将个人计算机上的串口调通,验证一下个人计算机上的串口是否好用。这就需要用到串口调试小助手。首先将一根usb转rs-232转换线的2、3引脚短接,然后将带有“驱动程序”的光盘放入个人计算机中,安装并运行与自己计算机相匹配的驱动程序,接着将转换线的usb端插入个人计算机的usb口,即完成了初步的安装
33、。打开设备管理器,看一下所插入的转换线占的是哪个串口,因为在接下来调试串口要用到。串口调试助手是一个专门用来调试串口程序的功能软件,要想测试串口是否可用,应先打开软件,选择串口号,打开串口,在发送区输入内容,点击发送按钮,若在接收区中有所发送的内容,则证明此串口可用。2.4 本章小结本章从原理上介绍了串行通信的基本原理,详细的阐述了rs232标准协议接口和与串行通信相关的一些知识。介绍了通信参数与串行通信的分类。为下文编写windows应用程序实现两台pc机进行数据交换提供了基础。第3章 crc校验3.1 crc校验原理3.1.1 crc校验码的基本原理在早期的通信中,由于通信技术不够可靠(不
34、可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),这样不可靠的通信就会带来“确认信息”的麻烦,造成一些事情的延误等。为了避免这一弊端,在进行数据交换,通信的过程中,对通信的可靠性检查就需要校验,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。如早期一样目前在通信系统的数据传输过程中,由于信道中各种复杂因素的影响,使传输的信号受到干扰,造成传输过程中误码的出现。接收方为了检查所接收的数据是否有误码,可采用多种检测方法。差错控制编码是目前数据传输过程中普遍采用的一种提高数据通信可
35、靠性的方法,而crc是一种在实际通信中应用很广泛的差错控制编码,具有很强的检错能力。crc(cyclic redundancy check)循环冗余校验码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。crc循环冗余校验码的基本原理是任意一个由二进制位串组成的代码都可以和一个系数仅为0和1取值的多项式一一对应。例如:代码101011对应的多项式为,而多项式为对应的代码1100101。crc校验码是在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种编码也叫(n,k)码。crc校验码的生成借助于多项式除法,其余数为校验字段。其中发送方发出传输字段
36、,传输字段由两部分组成的,分别为信息字段和校验字段。接收方使用相同的生成码进行校验,若接收到的字段或生成码(二进制除法)如果能够除尽,则说明在通信过程中,数据交换期间未受到其他因素的干扰,消息收发成功。3.1.2 crc校验码权的形式crc校验码有很多种权的行式,使用哪一种形式是根据通信双方共同制定的“规则”而定的,其中各种常用权的形式如下所示: (3-1) (3-2) (3-3) (3-4) (3-5)以其中crc-ccitt形式为例。图 3-1说明了 crc 校验中 crc 值是如何计算出来的,体现的多项式正是式(3-5)。从把数据移位开始计算,将数据位(从最低的数据位开始)逐位移入反向耦
37、合移位寄存器。当所有数据位都这样操作后,计算结束。此时,16 位移位寄存器中的内容就是 crc 码。图3-1中x 代表 bit5,x 代表 bit12,1 是代表 bit0,比较特别,是指移位寄存器移入的数据。图3-1 生成crc-ccitt的移位寄存器的作用原理3.2 crc校验的实现实现crc校验有很多种算法和方式,最基本的算法应该是按位计算了,这个方法可以适用于所有长度的数据校验,是最为灵活的,但由于是按位计算,其效率并不是最迅速、最优的,只适用于对速度不敏感的场合。还有一种是按照字节计算crc校验码,按字节校验是每次计算8位数据,多是基于查表的算法,首先要准备一个表,一共256项。在使
38、用的时候,把计算出来的校验值放在最后两个字节里,将其发送出去,接收端对所有的数据进行相同的校验,如校验值为0我们则认为其数据没有出错。这个是按高位到低位的发送顺序时使用的校验方法。3.3本章小结本章介绍了通信中最常使用的校验方法,即crc校验。分析了crc校验原理、算法形式和算法的实现。并通过crc校验实现通信中的检错。第4章 软件的实现及其测试4.1 开发工具概述4.1.1 windows编程与mfcwindows编程大致有两种方法,一种是windows c方向,即sdk方向,调用win 32 api函数,主要是利用c语言来实现软件的功能与编程;另外一种方法是c+对sdk函数进行包装,如vc
39、的mfc(微软基础类库),bob的owl等。其中使用mfc直接编写提供大量预先编好的类和支持代码或使用mfc和向导(wizards)编写,用appwizard来生成windows应用程序框架。本次软件程序设计功能的实现主要利用windows编程中mfc(利用c+语言)。mfc提供了构造windows应用程序的框架,它不仅为应用程序建立标准的结构,还为其提供了标准的图形用户界面如菜单栏、工具栏、状态栏等,开发人员只需要在此基础上添加针对特定应用的代码即可。使用此应用程序框架有很多优点,如其应用程序代码小,运行速度快,并且此应用程序提供的工具也降低了编码的难度等。windows应用程序的框架主要有
40、两种类型,一种是基于对话框的应用程序框架,另外一种是基于文档、视图结构的应用程序框架。平大家所见到的大多数windows应用程序均属于这两种框架。mfc的全称是microsoft foundation classes。是微软把windows api 进行封装的类库,该类库以层次结构组织起来,其中封装了大部分windows api函数和windows控件。1989年微软公司成立application framework技术团队,名为afx小组,用以开发c+面向对象工具给windows应用程序开发人员使用。启用mfc编码可以使windows程序员能够利用c+面向对象的思想进行编程,用好的类作为标准
41、,减少代码的编写量。4.1.2 串行通信控件mscomm目前,以win 32 下的mfc应用程序为主要框架,基于vc+的常用串行通信编程一般可以用两种方法实现:一种是使用windows api通信函数。虽然在windows下win32api提供了使用文件操作方式的函数进行串口操作的方法,但是在编程实现上还是比较复杂。其余一种是利用mscomm activex 串行通信控件。windows平台先进的activex技术利用已有的mscomm activex控件,只需要编写少量的代码,就可以轻松高效地完成任务,使得对串口编程不再需要处理烦琐的细节。这样程序员就不需要花费大量时间去了解复杂的api函数
42、,只需要利用mscomm控件就可实现串口编程。所以,本次实现两台pc间的通信使用的就是mscomm控件。4.2 程序的主要功能实现两台pc机之间的通信的应用程序,主要实现了密码登陆、参设设置、参数显示、打开串口、关闭串口、数据发送、数据接收等功能。主要功能框图如图4-1所示。主函数密码登录参数设置打开串口关闭串口接收数据发送数据图4-1 主要功能框图应用程序主要实现的功能如图4-1所示的主要功能框图,此应用程序的总体程序流程图如图4-2所示。开始调用初始化程序登录界面n登录验证是否正确y主界面n串口号是否可用y设置串口打开串口n通信参数是否符合y设置参数输入数据并发送数据发送完成ny关闭串口结
43、束图4-2 程序流程框图使用此应用程序时,需要有正确的用户名和密码才能登录到此软件的主界面,登录到主界面后,要想实现两台pc间的通信则需要选择可用的串口号并且传输参数要一致,其中包括波特率、数据位、停止位、奇偶校验位等,只有设置对的参数才能实现数据交换的功能。在发送接收数据过程中需要打开串口。通信结束后,关闭打开的串口。能够发送单个或多个数据。能够接收和显示多个数据。程序流程图如图3-2所示。4.3 程序运行平台在程序设计时,原计划使用vs2008软件,但是由于电脑、操作系统等各种原因,就改用vc+ 6.0这个软件。4.4详细设计4.4.1 建立工程要实现通信,首先应先建立工程,即新建基于wi
44、n32的mfc应用程序。首先打开vc+6.0软件,建立基于对话框的mfc应用程序。并将这个应用程序命名为通信。然后在将基于对话框选中(如图4-3),直接下一步即可,最后直到完成。图4-3 建立基于对话框应用程序过程图按照如上所示的方法步骤,建立win32下的mfc应用程序工程,应用程序工程名为“通信”,最后点击完成按钮,就会出现mfc应用程序初始界面如图4-4所示。图4-4 应用程序最初界面4.4.2 界面功能实现1.登录界面登录界面的设计除了应用mfc中的控件和工具外,要想实现其用户名和密码的验证功能还利用了数据库的知识。本次登陆界面使用的数据库是微软的access数据库。access数据库
45、是一个小型的数据库,使用起来非常的灵活、方便 。对access数据库的连接与操作有很多种方法,例如在asp中建立对access数据库的连接、使用recordset对象操作access数据库、使用sql指令操作数据库、使用dsn连接access数据库等。其中使用dns连接access数据库方法中,在定义dsn的时候,就已经指定好了数据源需要的odbc驱动程序,也指定好了数据库文件的实际路径和名字,我们在程序中,只需要引用预先定义的数据源名dsn即可。首先,启动microsoft office access,建立access数据库,命名为demo01,然后在数据库中创建一个表,命名为puser,在
46、表puser中输入序号(userid)、用户名(username)和密码(userpwd),将这个数据库保存。最后为access数据库demo01建立数据源,利用odbc驱动。数据库和数据源建立完成后,开始用mfc建立登陆界面。数据库中用户名和密码如图4-5所示。图4-5 数据库中用户名和弱密码运行应用程序时,若输入了错误的用户名或密码,则系统会提示输入错误。若输入用户名和密码正确,即与access数据库表login内容相一致,点击登录按钮,出现提示正确,点击确定按钮应用程序的界面会由登陆界面跳转到主界面,开始进行数据交换。登陆界面如图 4-6 所示。图4-6 登录界面2.主界面主界面是整个应
47、用程序的主体,大致可划分为三部分,有接收区、发送区和设置区。接收区由静态文本框和编辑框组成;发送区同样也是由静态文本框和边界框组成;设置区由组合框、按钮和静态文本框组成。完整的主界面如图4-7所示。 图4-7 主界面3.参数设置界面完成两台pc机间的串行通信(数据交换),必须保证两个串口的通信参数一致,这样就需要将两个应用程序的通信参数重新设置,通信参数包括波特率、数据位、停止位、奇偶校验位等。相应的通信参数设置完成后,点击【确定】按钮,应用程序则会再次跳转到主界面(数据收发界面),若想取消设置则点击取消按钮,参数设置界面关闭,回到主界面。界面的具体情况如图4-8所示。图4-8 设置界面4.4
48、.3 模块分析1.用户名密码登录模块在登录界面下,在编辑框中输入用户名和密码,单击界面中的【登录】按钮,可以验证用户名密码输入是否正确,若正确登录,程序提示“登陆成功,欢迎使用!”,然后登陆界面关闭显示主界面,若输入错误则程序提示“密码用户名错误,请重新输入!”。需要重新输入和验证,验证通过后才可以登录。实现该功能的程序流程图如图4-9所示,实现该功能的程序代码如下:开始n是否登录y输入获取信息n点击退出按钮密码用户名是否一致y登录成功,转到主界面结束图4-9 用户名密码登录模块流程图void cmylogin:onbnclickedok()/ todo: add your control n
49、otification 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("username='%s'anduserpwd='%s'",m_username,m_userpwd);m_user.open(crecordset
50、:snapshot,null,crecordset:none);if(m_user.iseof()/密码用户名不一致m_user.close();afxmessagebox("用户名、密码错误,请重试!");return;elsem_user.close();afxmessagebox("登录成功,欢迎使用!");cdialog:onok();catch(cdbexception* e)e->reporterror();return;2.应用程序初始化实现先显示登陆界面后主界面,利用mfc中的模式对话框在初始化函数中来实现,若串口是打开的则关闭串口
51、,同时串口参数的设置也是在初始化函数中设置实现的。初始化的程序流程图如图4-10所示。具体程序代码如下面所示:开始显示登陆界面串口是否打开ny关闭串口设置参数结束图4-10 初始化流程图bool cmydlg:oninitdialog()cdialog:oninitdialog(); / todo: add extra initialization herecmylogin my;my.domodal();/显示登录界面if(m_ccomm.getportopen() /如果发现串口本来是打开的,则关闭串口m_ccomm.setportopen(false);m_ccomm.setcommpo
52、rt(4); /选择com4端口m_ccomm.setinputmode(1); /输入方式为二进制方式m_ccomm.setinbuffersize(1024); /设置输入缓冲区m_ccomm.setoutbuffersize(512); /设置输出缓冲区m_ccomm.setsettings("9600,n,8,1");/波特率,无校验,个数据位,个停止位return true; / return true unless you set the focus to a control3.设置、打开和关闭串口功能开始设置串口号打开串口关闭串口结束图4-11 设置、打开和关
53、闭串口流程图串行通信是通过串口实现数据交换的,但是pc机上有不止一个串口,需要我们设置进行串行通信端口号,并将串口打开,通信结束后将串口关闭。程序流程图如图4-11所示,实现其功能代码如下:void cmydlg:onopen() / todo: add your control notification handler code hereif(m_ccomm.getportopen()m_ccomm.setportopen(false);cmydlg md1;updatedata(true);md1.m_comn = m_comn;m_ccomm.setcommport(m_comn+1);
54、 /设置串口号m_ccomm.setinbuffersize(1024); /接收缓冲区m_ccomm.setoutbuffersize(1024);/发送缓冲区m_ccomm.setinputlen(0);/设置当前接收区数据长度为,表示全部读取m_ccomm.setinputmode(1);/以二进制方式读写数据 m_ccomm.setrthreshold(1);/接收缓冲区有个及个以上字符时,将引发接收数据的oncommmscomm事件if(!m_ccomm.getportopen()m_ccomm.setportopen(true); /打开串口m_ccomm.setrthreshold(1); /每当接收缓冲区有个字符则接收串口数据m_ccomm.setinputlen(0); /设置当前缓冲区长度m_ccomm.getinput(); /预
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借款合同中的担保人责任详解
- 购销合同的格式写作要求
- 污水处理厂建设合同
- 模特商业推广服务合同范本
- 混凝土搅拌采购合同
- 水电安装工程分包承诺
- 借款用途合同模版示例
- 个性化日用品购销合同
- 化工产品订购协议
- 房屋买卖合同中抵押的处理方式
- 电影美术指导课程设计
- 《老北京的小胡同》课件
- 国开电大操作系统-Linux系统使用-实验报告
- 边境地区铁丝网铁栅栏建设技术规范
- 大学mooc英语畅谈中国(湖北大学)章节测验答案
- 重大事故隐患专项排查检查表
- 《小学生C++创意编程》第3单元课件 选择结构
- 体育心理学(第三版)第03篇章运动兴趣和动机
- jgj39-2016《托儿所、幼儿园建筑设计规范》(2019年版)
- 堆肥场施工方案
- 一户一表改造施工方案
评论
0/150
提交评论