Windows_CE下PC104模块与MCS51单片机串行通信
适合了解单片机,但对嵌入式开发不是很明朗的学习者,很好的实例作为切入点维普资讯htp://ww. cqvip. com42《测控技术》2002年第21卷第11期量的CPU时间,效率低。使用多线程管理串口通信可验 ODDPARITY表示奇校验; NOPARITY表示不校验;以充分利用资源,提高数据处理速度。创建读线程和 MARKPARITY表示标记校验,所发信息帧第9位恒为写线程并使用事件同步机制实现PCl04模块和多个1,在此设置下发出的信息帧作为地址帧; SPACEPARI单片机之间的串行通信。 Windows CE API是TY表示空格校验,所发信息帧第9位恒为0,在此设Win32API的子集,它支持大多数 Windows Nt/98支持置下发出的信息帧作为数据帧。的通信API函数。 Windows CE提供事件对象和单PC104串口通信程序基本步骤事件等待函数来同步各线程。① Create File()以读写同步方式打开串口;②2 Setup Comm()、 Set CommState()、 SetComm Mask程序入「()设置串口参数申行口初始化③ CreateThread()创建读写线程,建立PC104与中断,保护现场MCS51单片机之间的通信N地址相符否④使用读写线程进行数据通信;⑤关闭串口句柄。接收下个字符部分程序及注释<命令字?hCom CreateFile("COM2", GENERIC_ READ I GENERICWRIE,0,NUIL,OPEN_ EXISTING,0,NUL);以读写同步方命令分类收式打开申口,注意 Windows CE的串口后必须有冒号[发送数据接收数据dcb Parity NOPARITY发送完?接收完?dcb. Stop Bits ONESTOPBITYdcb. EvtChar=‘a’;∥/设置通信事件字符Set Comm State(hCom,&dcb);∥/设置DCB块恢复现场,返回hReadEvent= CreateEvent (NULL, FALSE, FALSE, NULL);/创建同步事件图2单片机串口通信软件流程Set Comm Mask (hCom, EV_RXCHARIEV_RXFLAG)①等待函数。/设置通信事件掩码DWORD Wait ForSingleObject( HANDLE hObject, DWORD Read Thread( LPVOID lparam)dWord dwTimeout);其中参数 hObject标识同步对 dWord dwEyent;象; dwTimeout以ms为单位指定暂停时间。 Wait Forsint n Num. addrngle Object()函数在线程函数中被调用时,检查同步WaitForSingle Object (hReadEvent, INFINITE)对象的状态,如果对象不是处于有信号状态并且暂停if(dcb. Parity== MARKPARITY)∥是否地址帧时间没有结束,则调用线程进入一种有效的等待状态,i ReadFile(h Com, &addr, 1, &nNum, NULL);f( addr =s address在此期间线程将被堵塞,直到同步对象为有信号状态fAdd= TRUe或超时才返回。while( ComOn)/通信开始标志②同步事件。if( dw Event&EV_ RXFLAG==EV-RXFLAG)仗用 Create Event()函数创建事件对象。事件对ReadFile(hCom, inbuff, sizeof( inbuff), &n Num, 0);象可分为手工重置事件和自动重置事件两种。手工重置事件,其状态保持有用信号状态直到使用Resetevent()函数设置为无信号状态,而自动重置事件,其状态保持有用信号直到拥有事件的线程释放为止void CView:: OnComstart()//开始串口通信即当线程释放时,自动把信号复位为无信号状态。事hRead= Create Thread( NULL, 0,( LPTHREAD_ STArT_ROU-TINE)ReadThread, 0, CREATE_SUSPENDED, NULL)件创建以后,可以使用 Set Event()或 PulseEvent()函if( Shakehands()数设置为有信号状态,用于通知等待线程事件已发生,〃/PC104和单片机建立握手信号,开始数据通信等待线程继续执行。tdcb, Parity= SPACEPARITY;∥/设置数据帧,即第9位为0使用 Microsoft embedded visual c++3.0实现Set CommUtate(hCom,&ddb);//收发数据,进行数据处理PC104模块串行通信程序。设备控制块DCB是一个 Closehandle(hCom);/退出数据通信结构,用于设置串口通信参数。DCB结构的Pat参数为校验方法,有效值为: EVENTPARITY,表示偶校(下转第44页)北京长安自动化工程集团空气分离制虱系统电话:010-65684040传真:010-65687631维普资讯htp:/ ww cqvip. com《测控技术》2002年第21卷第11期标的分辨率为400di,理论上即沿应用系统GND803GND着某一方向每拖动1in(一般速度外围器件1in=25.4mm),会产生400次信及其16+5VDTR扩展部分R]47息发送过程,如果拖动较快,则信息HRTS发送次数减少,但所反映的总的移TXD动距离仍然是400步。10[P301012RXD2鼠标接口程序设计8031单片机应用系统MAX232ERS232C8051系列单片机内部集成有图1鼠标8031应用系统接口原理图RS232收发器,但不具有RS232标准接口电平,为了平要求。满足鼠标的供电和接口电平要求,必须配备电平转换表面上看,8031的串行接口并没有鼠标默认的帧器。这里采用MAK232E作为接凵芯片。格式,但其工作方式1(1位起始位、8位数据位、1位停图1中左侧为8031的应用系统,P.0(RXD)、止位)的总传送位数与鼠标(1位起始位、7个数据位P3.1(TXD)通过MAX232E形成满足鼠标要求的串行2个停止位)相同,均为10位,接收过程中8031收到7接口,包括生成标准RS232C电平和提供电源供应。个数据位后,将2个停止位中的第个作为数据位装图中最右边为9针或25针标准串行接插件。由于鼠接收缓冲器的最高位,由于停止位在物理层是高电标的电源供应采用功率窃取方案,由 DTR/RTS提供,平,作为数据被接收后相当于逻辑“0”。剩下的第二这里为DTR加限流电阻防止对鼠标造成伤害。RT个停止位恰好为8031提供了有效的停止位,因此利用由MAX232E的信号发送端提供,通过8031的P.18031的工作方式1完全可以保证正确接收鼠标信息。控制MAX232E的10脚(对应的输出脚为7脚)电平单片机启动后,通过鼠标驱动模块对鼠标进行初扃低以改变7脚电位,使鼠标可以接收到来自RTS的始化,即通过P3.1使RTS电平翻转次而令鼠标发控制命令,以实现鼠标安装与否的检测。在MAX232E送初始化报告,以确认鼠标是否安装。之后,鼠标即可的11脚(14脚对应的输入脚)设置高电平以保证14随着拖动或按钮操作向单片机发送动作信息,经接口脚电位为负RS232电位,以满足鼠标发送信号时的电模块翻译即可反应鼠标位置和按钮状态。鼠标接口模块主要包括按钮状态识别和位置识别两个部分,8031将根据接收到的鼠标信息不断刷新鼠(上接第42页)标信息缓冲区。由于鼠标事件间隔不确定,采用扫描5结论方式不但会浪费CPU时间,还可能因来不及处理而丢失信息,有效的处理方法是采用中断方式接收,应用模PC04串凵通信程序在运行 Windows200Poes-块通过软件接口获得鼠标信息。完整的鼠标接口程序sional的PC机上,使用嵌入式 Visual o++编写,下载框图如图2所示,在初始化阶段,首先检查鼠标是否存到运行 Windows CE的目标机PC104上调试,程序调在,根据结果设置标志位,以备以后取鼠标信息时判断试成功以后复制到PC|04的电子盘上,按图1与MCS-用,根据需要设定鼠标初始位置按钮原始状态,最后5单片机连接好,运行串口通信程序PC04模块和设置串行接口参数(帧格式等)并开放鼠标中断。鼠各个单片机之间按自定的协议正常通信。采用这种硬标发送信息时,每3个字节为1个完整的信息报什,但件和软件设计方式构成的嵌入式分布控制系统,具有8031每接收到1个字节,就产生一次中断,然后根据成本低、设计简单、操作方便、通信可靠适应恶劣环境当前字节是否大于40H确定其性质,若是信息报告等优点,非常适合主从式微机系统间的数据通信。首字节,则还要进一步通过有效性检验后保存;若不是参考文献首字节,则必须经过一系列检验后保存起来。收到3[1]王福瑞等.单片机微机测控系统没计大全[M].北京:航空航天大学出版社,1998个字节后立即进行命令分析和执行。具体处理过程可ra] Boling d. Programming Microsoft Windows CI[M].Micrκsres,参看源程序。用户模块通过特定接口模块(图2(b)199y9获得鼠标当前位置和按钮状态,并可通过进位标志C[3]胡虛怀,郑若忠.基于 Windows CE的通信技术[J].计算机应用,0/1判断鼠标是否安装。200,(1)4] Kruglinski D J. Wingo S. Programming Visual C十+6.0技术内幕下面所示程序清单即为图2、图3程序框图对应第五版修订版)[M}.北京:希望电子出版社,199的程序清单。该程序要求8031CPU的T作频率为11.0592MH北京长城工业控制计算机技术公司R. APPRO.ICS.TM系列工控机电话010-65680124
用户评论
讲解的内容一般