串口发送短信的奇怪错误

penning 2007-06-27 06:01:51
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);

为什么会出现这两个错误呢?校验位错误我认为绝对不可能啊,溢出错误我增大输入缓冲大小还是不行。请教各位了,谢谢
...全文
228 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MPTD_Fire 2007-07-16
  • 打赏
  • 举报
回复
up
sfengnet 2007-07-06
  • 打赏
  • 举报
回复
同意毛毛
Waiting4you 2007-06-27
  • 打赏
  • 举报
回复
在设置dcb的:

fOutxCtsFlow=false;
fInX=fOutX=false;
fRtsControl=RTS_CONTROL_ENABLE;

以确保是以无控制位的方式通信.
cczlp 2007-06-27
  • 打赏
  • 举报
回复
用PortMon监视看看
i_love_pc 2007-06-27
  • 打赏
  • 举报
回复
是不是硬件坏了,或者数据线有问题

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧