您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页基于WindowsAPI函数编程的PC机与单片机多机通信的实现

基于WindowsAPI函数编程的PC机与单片机多机通信的实现

来源:华佗小知识
维普资讯 http://www.cqvip.com 2007年9月 第22卷第3期 山东师范大学学报(自然科学版) Journal of Shandong Normal University(Natural Science) Sep.2O07 V01.22 No.3 基于Windows API函数编程的PC机 与单片机多机通信的实现 周茂霞 (山东师范大学传播学院,250014,济南∥32岁,女,讲师) 摘要基于PC机与80C51单片机的多机串行通信,主机通信程序采用Windows API函数在Delphi中结合多线程等技术编写 主机采用事件触发查询方式采集数据,单片机采用中断方式发送数据. 关键词 多机串行通信;单片机;Windows API函数;多线程 中图分类号TN 91;TP 36 在以单片机为基础的数据采集和实时控制系统中,通过PC机的RS一232C串行口进行PC机与单片机的多机数据通信, 可以组成检测和控制系统.而Delphi的基础库封装了API中的标准通信函数,可以方便的进行串口通信.本文主要介绍在利用 API函数进行串口通信中如何结合异步通信、多线程等手段,编写多机通信程序,特别是在CPU对多个外围设备监测并对采集 的数据进行处理或显示,实现集中管理和最优控制,具有重要的现实意义. 1 系统的硬件组成 系统中采用多片80C51单片机作为多机通信的从机,PC机作为主机,二者通过RS一232C串行口进行通信.由于RS一232C 信号电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换.可采用集成电平转换芯片MAX232进行RS一232/ ,IrIL电平转换.硬件连接图如图1.在 单片机与PC机多机通信系统中,当 传输距离大于15 m时,采用RS一 232C标准接口传输时需要使用调制 解调器(MODEM),因而在较长距离通 / I1 \  ll 信时一般采用RS一485接口.由于微 机的接口为RS一232 C接口,可采用 RS232/RS485转换器进行转换 . PC主机 图1硬件连接原理 2多机通信实现原理及系统设计 在多机通信中,要保证主机与所选择的从机实现可靠通信,必须保证串行口具有识别功能,串行口控制寄存器SCON中的 SM2位是多机通信的控制位.80C51单片机的串行口是一个全双工的异步串行通信口,它支持4种串行通信方式,当以方式2 或方式3接收时,若SM2=1,则表示置多机通信的功能位.若SM2=0则为主机与单片机的一对一的通信.多机通信的工作过 程如下:①从机初始化程序允许串行口中断,将串行口编程为方式2或方式3接收,且把SM2和REN位置1,使从机处于多机 通信且接收地址帧的状态.②在主机与某一从机通信前,把从机地址发送给各个从机系统.主机发送的地址信息的第9位为 1,数据信息的第9位为0.各从机都处于接收地址帧的状态,所以各从机都把中断标志砌置1响应中断,执行中断服务程序. 在中断服务程序中,判断主机送来的地址是否与本机地址相符合,若符合则清…0’SM2位,准备接收主机的数据或命令;若不符 合,则保持SM2=1状态.③主机发送数据帧,只有SM2清…0’的从机才能引起中断接收数据,保证主机和从机间通信的正确 性 . 3 PC主机程序设计和流程图 在实际应用中,多机通信常用主机查询、从机中断的工作方式.PC机采用Delphi语言进行编写程序.Delphi语言功能强大, 简便易用和代码执行速度快,是一种可视化应用开发工具,它支持面向对象的程序设计,具有结构化的事件驱动编程模式,可 以做出友好的人机界面 J.在实际编程中可利用事件驱动查询读取从机数据,数据格式设计为1帧11位,与80C51的数据格 式一致.利用Delphi实现串口通信有3种方法:①利用控件,如Speomm控件等,有些控件网上可免费下载;②使用Windows API函数;③调用其它串口通信程序.本设计采用API函数编程实现多机通信,API函数功能强大,编写的程序可移植性强,具 收稿日期:2006—12—06 维普资讯 http://www.cqvip.com 第3期 周茂霞:基于Windows API函数编程的PC机与单片机多机通信的实现 63 有针对性,支持多线程.Windows提供了两种线程,辅助线程和用户界面线程.区别在于: 辅助线程没有窗口,所以它没有自己的消息循环.本设计使用辅助线程,主要用来监视串 口状态;而主线程则可专心进行数据处理、提供友好的用户界面等重要的工作.辅助线程 串行口初始化 和用户界面主线程必须同步.本设计中采用异步通信,一旦调用函数ReadFile()和Write— 建立串口监测线程 File(),就能立即返回,而让实际的读写操作在后台运行,避免读写等待.多机串行通信需 按钮事件触发 要利用多线程技术实现,其主要的处理逻辑可以表述如下:开始先由用户界面线程做一 些必要的初始化工作一用户界面线程根据需要建立通信监测线程检测通信口一当指定 发送地址帧 的串行口事件发生时,向用户界面线程发送WM—COMMNOflFY消息,用户界面线程对其 进行处理.若不需要WM.COMMNOTIFY消息,则主线程终止通信监测线程_4 J.多线程同时 发送从机 从机应答否? >二 应 \/ 执行,将会引起对共享资源的冲突.为避免冲突,就要用同步多线程对共享资源进行访 复位地址帧 ●Y N 问.Windows提供了许多保持线程同步的方法,本设计中采用创建事件对象来保持线程同 笞地址相符 > \/ 步.通过CraeteEvent()创建事件对象,使用SetEvent()将事件对象设置成信号同步.在应用 lY 程序中,利用WaitSingleobject()函数等待同步的触发,等到指定的事件被辅助线程设置为 有信号时,才继续向下执行程序 J. 建立Pc机与某 4基于API函数的程序具体实现方法 单片机对一通信 在Delphi编程环境下通过调用外部的API函数来通信,主要步骤如下:首先,利用 二二[ 本次通信结束 CreateFile()函数打开串行口,以确定本应用程序对此串行口的占有权,并封锁其它应用 程序对此串口的操作;其次,通过GetCommState()函数填充设备控制块DCB,再通过调用 SetCommState()函数配置串行口的波特率、数据位、校验位和停止位.然后,创建串行口监 测线程监视串行口事件.在此基础上就可以在相应的串口上操作传输的数据;最后,用  l壅 l CloseHandle()函数关闭串行口.具体的程序如下. 图2多机通信PC机查询程序流程 1)定义一个发送串口消息的常量 While True do Begin const Wm-commNotify=Wm—User+12; dwEvtMast: 0; 2)线程声明具体如下 Wait: WaitCommEvent(hcom,dwevtmask,lpo1); Teomm=Class( 兀11read) //等待串行口事件; protected fwait Then eBgin procedure Execute;override; Waitsingleobjeet(post—event,infinite); end; //等待同步事件置位; 线程的执行过程如下: resetevent(post—event); Procedure TComm.Execute;//线程执行过程 //同步事件复位; Vm PostMessage(Form1.Handle,WM—COMMNOTIFY,0,0); dwEvtMask;Dword; //发送消息; Wait:Boolean; end; Begin end; ifUchar(1pol,sizeof(toverlapped),0); 3) 自定义编写初始化串口的过程: Pmcedure commiintialize;注意在编写串口初始化程序时,要首先打开串口,按系统约定的协议设置波特率、起始位、停止位、 数据位、奇偶检验的类型等,建立同步事件,建立并执行串口监测线程等. Procedure FormCreate(Sender:Tobject); 4)编写消息处理过程程序: 在多机通信过程中,PC机作为主机通过触发某个事件联络从机,当符合条件的从机向PC发出响应时,监测线程检测到串 口事件后,向窗体发送消息,引发预先编写的消息处理过程自动执行.在这里编写消息处理过程必须满足三个条件:①这个过 程必须是一个对象中的方法;②这个过程必须一个vat参数,变量的类型是Tmessage或其它特殊的消息记录;③声明这个过 程时,必须使用message指示符,后面是要处理消息的常量值. Procedure MsgcommProcess(VarMessage:Tmessage);Message Wm—commnotify; Begin;{处理接收数据的程序};SetEent(Post— Event);//同步事件置位;end; 在启动界面主线程时,系统自动初始化,调用自定义初始化串口的过程,串口设置完毕,监测线程建立并执行. 维普资讯 http://www.cqvip.com 山东师范大学学报(自然科学版) 第22卷 在编写PC机与单片机软件程序时要考虑PC机速度比单片机速度快的因素,在传输数据时要适当加入延时,以确保系统 正常运行,还要保证数据的传输正确性,可采用接收到的数据回送校验.本设计在体育专业技能测试评分自动记录系统中实 际应用,效果良好,实现了多人评分数据进行保存、处理和显示,具有一定的实用性. 5参考文献 [1]尹建化,张惠群.微型计算机原理与接13技术[M].北京:高等教育出版社,2003.630~632 [2]张毅刚,刘杰.MSC一51单片机原理与应用.哈尔滨:哈尔滨工业大学出版社,2004.113~131 [3]范逸之,陈立元.Delphi与RS一232串行通信控制[M].北京:清华大学出版社,2002.67~87 [4]邢增平.Delphi 6.0最佳专辑[M].北京:人民邮电出版社,2O02.212~219 [5]周航慈.单片机应用程序设计技术[M].北京:航空航天大学出版社,2002.109~114 [6]刘啸,汪启伟.Delphi5高级编程[M].北京:人民邮电出版社,2002.45~59 [7]陈寿元.单片机多机通信网络改进及数据通信容错技术[J].山东师范大学学报(自然科学版),2006,21(2):33~35 PC& J】[ TI—SD GI E CHⅡ’PRoCESSoRS CO |『【 CA 【oN BASED oNⅥ WS API FUNCTIoN PRoGR A 佃NG Zhou Maoxia (Communication CoUege,Shandong Normal University,250014,Jinan,China) Abstract Based on PC and 80C5 1 multi—single chip processors serial communications,using windows API fimc— tion programming,the pmgrame of PC communications is writen in DELPHI.The PC USeS the eventtriggering and inquiry— ing way to gather data.The single chip processors use the interrupt way to transmit data. Key wrods multi——single chip processors serial communication; windows API Function; multithreading ;\ / 0 .、 \: ・\./・\ ・\: ・\./・\-/・\ ・\ ・\ ・\ ・\ ・\ ・\:/・\y・\y・\:/・、 ・\y・\y・\二/・\二,・\:,・\-/・、 ・\y・\:/・\./.、 (上接第5l页) 4参考文献 [3]Teng S,Liu L,Zu J,et a1.Uniform theory ofthe Tallbot effect wiht parially coherent light illumination[J].Journal of the Optical Society of Ameriac A, 2003,20(9):1 747~1 754 [4]Liu L.Talbot and Lan Effcets on incident beams of arbirary wavefront andtheir USe[J].Applied Optics,1989,28(21):4 668~4 678 [5]Iju L_ caviyt nad p}lase locking oflaser arrays[J].Optics Lenem,1989,14(23):1 312~1 314 [6]Lohmann AW,Thomas J.Makingan arrayilluminator based ontheTalbot effcet[J].ApplideOptics,1990,29(29):4 337~4 340 [7]陈小艺,滕树云,宋洪胜,程传福.菲涅耳深区的散斑光强概率密度[J].山东师范大学学报(自然科学版),2006,21(2):48~50 [8]Goodman.Introduction 0f Fourier Optics[M].New York:Mcgraw—Hil bo press,1968.13~52 [9]Latimer P.Crouse R.Talbot effcet reinterpretde[J].Applide Opplide Optics,1992,31(1):8o~89 THE】[c Ⅱ UENCE oF SIZE oF THE GRAT G 0lN THE TALBoT EF腿CT Zhou Tongjun Teng Shuyun (College of Physics and Elcetronics,Shandong Normal Universiyt,250014,Jinan,China) Abstract The diffracton of the grating iS analyzed by the theory of the Fresnel diffraction.and the general formula of the difraction intensity of the grating in Fresnel diffraction region iS obtained.Through l0ts 0f the numerical calcula. tions.it is found that the influence of size of the grating on the Tabot effect at a certain Talbot distance iS obvious.For a grating with the sanle size,the further the Talbot distance iS,the severer the influence of size of the grating on the Talbot image iS.The physical expression for this influence on the difraction intensity at the Talbot distances iS performed too. Key words grating; Fresnel diffraction;Talbot effcet 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务