串口发送短信的奇怪错误
ReportComStat(DWORD dw_error) {
memset(sMsgBuf, 0x00, sizeof(sMsgBuf) );
switch (dw_error) {
case CE_BREAK :
wsprintf(sMsgBuf, "%S", "检测到中断信号。");
break;
case CE_FRAME :
wsprintf(sMsgBuf, "%S", "硬件检测到帧错误。");
break;
case CE_IOE :
wsprintf(sMsgBuf, "%s", "通信设备发生输入/输出错误。");
break;
case CE_MODE :
wsprintf(sMsgBuf, "%s", "设置模式错误,或是hFile值错误。");
break;
case CE_OVERRUN :
wsprintf(sMsgBuf, "%s", "溢出错误,缓冲区容量不足,数据将丢失。");
break;
case CE_RXOVER :
wsprintf(sMsgBuf, "%s", "溢出错误。");
break;
case CE_RXPARITY :
wsprintf(sMsgBuf, "%s", "硬件检查到校验位错误。");
break;
case CE_TXFULL :
wsprintf(sMsgBuf, "%s", "发送缓冲区已满。");
break;
default :
wsprintf(sMsgBuf, "errnum:%d", dw_error);
break;
}
以前发送串口一直都没出错,但是现在老报错。硬件检查到校验位错误。和溢出错误。可是发送短信还是可以成功。
我的一些参数设置如下:
#define READBUFFERSIZE 1024
#define WRITEBUFFERSIZE 1024
SetupComm(hCOM, READBUFFERSIZE, WRITEBUFFERSIZE );
PurgeComm(hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR);
TimeOuts.ReadIntervalTimeout = MAXDWORD;
TimeOuts.ReadTotalTimeoutMultiplier = 0;
TimeOuts.ReadTotalTimeoutConstant = 0;
TimeOuts.WriteTotalTimeoutMultiplier = 50;
TimeOuts.WriteTotalTimeoutConstant = 2000;
dcb.BaudRate = CBR_115200 ;
dcb.ByteSize = 8 ;
dcb.Parity = NOPARITY ;
dcb.StopBits = ONESTOPBIT ;
SetCommMask(hCOM , EV_RXCHAR | EV_TXEMPTY );
SetCommTimeouts(hCOM, &TimeOuts);
为什么会出现这两个错误呢?校验位错误我认为绝对不可能啊,溢出错误我增大输入缓冲大小还是不行。请教各位了,谢谢