项目10串行口通信-PDA中的串口(2)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

项目10:串行口通信-PDA中的串口(2)本节课程主要知识点串口的编程串口通信的扩展使用重点和难点重点串口的编程难点串口通信的扩展使用串口的编程串口通信基本过程(1/2)按协议的设置初始化并打开串行口,如果串口没有被其他应用程序占用,则该应用程序占用该串口。通知WindowsCE,本应用程序需要这个串口,并封锁其他应用程序使它们不能使用此串口。配置该串行口。串口通信基本过程(2/2)在串口上传输数据,根据约定,在传输过程中进行校验。不需要此串口时,关闭串口,即释放串口以供其它应用程序使用。串口通信编程(1/3)用于串行通信的函数和结构在winbase.h头文件中定义。在基于WindowsCE的设备上通过串行通信端口读写的任务由调用文件读写函数完成。CreateFile打开串行口。GetCommState获取串口的当前控制设置数据。串口通信编程(2/3)SetCommState按照DCB结构的数据配置串行口。GetCommTimeouts获得指定通信设备上所有读/写操作的超时参数。SetCommTimeouts设置指定通信设备上所有读/写操作的超时参数。WriteFile向串行口写数据,这样将把数据传送给串行口连接的另一端设备。串口通信编程(3/3)ReadFile从串行口读数据,这样将接收串行口连接另一端的设备传过来的数据。SetCommMask指定为通信设备监视的一组事件。GetComMask获得指定通信设备的事件掩码值。初始化串行口首先用CreateFile函数打开指定串口,设置其中的参数访问类型为GENERIC_READ|GENERIC_WRITE共享模式为0创建标志为OPEN_EXISTING模板句柄为NULL如果端口不存在,则返回ERROR_FILE_NOT_FOUND初始化串行口典型代码hSerial=CreateFile(LCOM1:,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);如果能够正常打开串口,hSerial应该返回的是串口的句柄。配置串口设置波特率、数据位、奇偶校验位、停止位和流控制方式,并且可以恢复缺省值。使用GetCommState(hComm,&dcb)读取当前串口设备控制块DCB(DeviceControlBlock)设置。修改后通过SetCommState(hComm,&dcb)将其写入。配置串口的代码DCBPortDCB;PortDCB.DCBlength=sizeof(DCB);GetCommState(hSerial,&PortDCB);//读DCBPortDCB.BaudRate=115200;//波特率PortDCB.ByteSize=8;//数据位PortDCB.Parity=NOPARITY;//校验位PortDCB.StopBits=ONESTOPBIT;//停止位SetCommState(hSerial,&PortDCB);//写DCB超时控制为了防止意外情况使串口读写无休止地等待,超时设置由COMMTIMEOUTS结构定义。通过调用GetCcommTimeOuts函数获得当前的设置。用SetCommTimeOuts函数来完成设置。超时控制的代码COMMTIMEOUTSCommTimeouts;GetCommTimeouts(m_hSerial,&CommTimeouts);获得当前超时参数CommTimeouts.ReadIntervalTimeout=MAXDWORD;CommTimeouts.ReadTotalTimeoutMultiplier=10;CommTimeouts.ReadTotalTimeoutConstant=10;CommTimeouts.WriteTotalTimeoutMultiplier=50;CommTimeouts.WriteTotalTimeoutConstant=100;SetCommTimeouts(hSerial,&CommTimeouts);设置当前超时参数发送超时控制ReadIntervalTimeout是指两个字符传送之间的超时时间。一次读操作的超时时间等于要接收的字符数乘以ReadTotalTimeoutMultiplier,再加上ReadTotalTimeoutConstant。发送超时控制WriteIntervalTimeout是指两个字符传送之间的超时时间。一次写操作的超时时间等于要发送的字符数乘以WriteTotalTimeoutMultiplier,再加上WriteTotalTimeoutConstant。数据传输读写串行端口与读写文件采用的函数相同,即ReadFile、WriteFile。WindowsCE不支持重叠IO操作,也称异步操作,当有多个线程进行IO操作时,应用程序可以使用WaitCommEvent函数阻塞线程,直至发生特定的通讯事件,以协调多个线程。发送数据的代码发送数据用以下命令完成WriteFile(hSerial,&Byte,nByte,&dwNumBytes,NULL);其中hSerial句柄&Byte数据缓冲区地址nByte数据大小&dwNumBytes返回发送出去的字节数NULL不支持重叠接收数据串口编程最复杂的部份就是接收数据。串口接收数据常常通过创建一个线程来完成。接收线程既要考虑及时的读取数据,还要解决接收到的数据的处理工作。关闭串口程序的终止可以自动关闭串口,也可用函数CloseHandle(),以便释放所占资源。串口的扩展使用扩展蓝牙PXA270的三个串口中,有一个是专为接入蓝牙模块设计的,这个串口也是一个标准的串口。将蓝牙模块接入,按照标准的串口编程方式编程。扩展GSM/GPRS将GSM/GPRS模块接入串口。安装串口驱动程序。利用标准的AT指令对GSM/GPRS模块编程。扩展GPS将GPS模块接入串口。安装串口驱动程序。利用GPS测试程序,观察通过串口接收到的卫星信息。

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功