ClearCommError()函数

清除串行端口错误或读取串行端口现在的状态时,可用函数ClearCommError。Windows系统利用此函数清除硬件的通讯错误以及获取通讯设备的当前状态

 ClearCommError()函数原型

BOOL ClearCommError(
                    HANDLE hFile,   //通信设备的句柄
                    LPDWORD lpErrors,//接收错误代码变量的指针
                    LPCOMSTAT lpStat  //通信状态缓冲区的指针
);

ClearCommError()函数参数说明:

    • hFile:串行端冂的Handle值,此值即为使用CreateFile函数后所返回的值
    • lpError:返回错误数值,错误常数如下:
    • CE_BREAK:检测到中断信号。
      CE_DNS:Windows95专用,未被选择的并行端口。
      CE_FRAME:硬件检到框架错误
      CE_IOE:通信设备发生输入/输出綹误,
      CE_MODE:设置模式错误,或是hFile值错误。
      CE_OOP:Wmdows95专用,并行端口发生缺纸错误。CE_OVERRUN:缓冲区容量不足,数据将遗失。
      CE_PTO:Windows95专用,并行端口发生超时错误。
      CE_RXOVER:接收区满溢或在文件结尾被接收到后仍有数据发送过来。
      CE_RXPARITY:硬件检测到校验位检查错误。
      CE_TXFULL:发送缓存区已满后,应用程序仍要发送数据。
    • lpStat:指向通信端口状态的结构变量。此结构的原始声明如下:
typedef struct _COMSTAT {  //cst
    DWORD fCtsHold : 1;  //Tx正在等待CTS信号  
    DWORD fDsrHold : 1;  //Tx正在等待DSR信号
    DWORD fRlsdHold : 1; //Tx正在等待RLSD信号
    DWORD fXoffHold : 1;  //Tx由于接收XOFF字符而在等待
    DWORD fXoffSent : 1;   //Tx由于发送XOFF字符而在等待
    DWORD fEof : 1;      //发送EOF字符
    DWORD fTxim : 1;     //字符在等待Tx
    DWORD fReserved : 25;   //保留
    DWORD cbInQue;    //输入缓冲区中的字节数
    DWORD cbOutQue;     //输出缓冲区中的字节数
} COMSTAT, *LPCOMSTAT;

此结构屮有关参数说明如下:
fCtsHold:是否正在等待CTS信号。占一个位的位置。
fDsrHold:是否正在等待DSR信号。占一个位的位置。
fRlsdHoId:是否正在等待RLSD信号。占一个位的位置。
fXoftHoId:是否因收到xoff字符而在等待。占一个位的位置。
fXoffHold:是否因送出xoff字符而使得发送的动作在等待。占一个位置
cbInQue:在输入缓冲区尚未被ReadFile函数读取的数据字节数。这个参数经常被用来进行状态检查。
cbOutQue:在发送缓冲区而尚未被发送的据字节数。

原文地址:https://www.cnblogs.com/rosesmall/p/14822244.html