1、Windows CE嵌入式高级编程及其实例详解10第10章 串口编程 串口是计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,因此应用非常广泛。例如在工业自动化中,很多智能采集设备都是采用串口方式和PC机进行通讯。在Windows CE嵌入式电脑中,串口依然是和外部设备进行通讯的重要方式,例如GPS设备。目前很多PDA都集成了蓝牙通讯功能,可以通过设置蓝牙通讯方式为串口方式,来和另外一端蓝牙设备进行通讯。作为一名Windows CE程序编写人员,掌握串口编程知识,将会为日后工作提供极大的便利。 本章主要包括如下内容: 串口概述 串口编程APl函数介绍 串口综合示例 GPS编程示例1
2、01 串口概述 “串行通信”是指外设和计算机间使用两根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。这种通信方式使用的数据线较少,在远距离通信中可以节约通信成本,而且其传输速度也不比并行传输的速度慢。相反的,“并行通信”是指一条信息的各位数据被同时传送。并行通讯的特点是:各数据位同时传送、传送速度快、效率高,但由于有多少数据位就需多少根数据线,因此传送成本较高,比较适用于近距离(相距数米)的通讯。 目前较为常用的串口有9针串口(DB9)和25针串口(DB25),当通信距离较近时(PURGE TXCLEAR:清空发送缓
3、冲区。 PURGE RXCLEAR:清空接收缓冲区。第10章串口编程359 这两个值可以组合使用,表示同时执行清空发送缓冲区和接收缓冲区的功能。 8清除错误并查询状态 Windows CE还提供了一个非常有用的函数ClearCommError,用于清除驱动程序产生的任何错误状态并返回当前窗口状态,该函数定义如下: BOOL ClearCommError( HANDLE hFile, LPDWORD ipErrors, LPCOMSTAT ipStat); 参数hFile指向已经打开的串口句柄。 参数lpErrors表示发生的错误码,它的值将是表108中的任意一个值或组合。表108 IpErro
4、rs参数取值表 错误码 描述CEBREAK硬件检测到了一个中断条件CEFRAME硬件检测到一个帧错误CE l0E硬件通讯时发生一个IO错误CEMODE请求模式未被支持,或者hFile参数无效。如果这个值被指定,它就是仅有的合法错误CEOVERRUN一个字符缓冲区侵占发生,下一个字符被丢失CERXOVER输入缓冲区溢出发生,或者输入缓冲区无空间,或者在收到EndOfFile(EOF)字符之后又收到字符CERXPARITY硬件检测到奇偶校验错误CETXFULL应用程序试图发送一个字符,但是输出缓冲区已满 参数lpStat指向COMSTAT结构,用于存储当前窗口的状态。COMSTAT结构的定义 如下
5、所示:tvPedef Struct COMSTATDWORD fCtSH01d:1;DWORD fDsrH01d:1;DWORD fRlSdH01d:1;DWORD fXOffH01d:1;DWORD fXoffSent: 1;DWORD fEof:1;DWORD fTxim:1j DWORD fReserved:25;DWORD cbInQue;DWORD cbOutQue;COMSTAT,+LPCOMSTATj前5个字段表示串口传输是否因为它的原因而等待。字段fCtsHold表示是否等待CTS信号。字段ff)srHold表示是否等待DSR信号。字段fRlsdHold表示是否等待“接收线路信号检测,也叫载波检测”。字段tXoffHold表示是否等待XOFF字符。字段fXoffSent表示是否因为驱动程序发送XOFF字符而等待。字段fEof表示是否收到串口尾部字符。字段fTxim如果是1,表示队列中的字符是由TransmitCommChar函数写入的而不WriteFile函数。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1