串口通讯中奇偶校验出错情况下如何读取接收数据?

cdhgb 2002-01-16 02:36:23
利用RS232通讯口收、发数据,数据采用1位起始位、8位数据位、1位奇偶位、1位停止位,波特率任意。在奇偶校验错误的情况下,我需要读该数据,该如何处理?开发软件采用VC6.0,通讯函数采用ReadFile、CreateFile、WriteFile不能实现,当奇偶校验出错时,不能读出数据,不知是硬件自动清楚出错数据(奇偶校验错)还是软件函数ReadFile的问题?
...全文
1157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdhgb 2002-02-23
  • 打赏
  • 举报
回复
谢谢fly2skylee(飞天)的指点,经过努力确实可以忽略奇偶错读取数据;但由于我在程序中需要经常使用SetCommState()函数改变通讯口的设置,导致硬件已接收尚未读取的数据丢失,能否有办法解决?请各位路过此地的高手指点。
dycdyc123 2002-02-23
  • 打赏
  • 举报
回复
具体的通讯接口你可根据其特点来校验!

比如说PLC
1fei 2002-02-23
  • 打赏
  • 举报
回复
不就是单片机和PC机的通读吗
用N模试接收就可以了
fly2skylee 2002-01-20
  • 打赏
  • 举报
回复
我记得在DCB结构体中好像有这么个选项配置,可以忽略奇偶错,你改改试试。
要不然就直接写底层吧!
cdhgb 2002-01-20
  • 打赏
  • 举报
回复
非常感谢zhuyue_csdn(逐月)的支持,可能是我未将问题说清楚,根据你的回复只能接收奇偶校验正确时的数据,当奇偶校验错误时,该数据(奇偶校验错误)不能接收下来,我将奇偶位另作它用,所以会出现奇偶位错误,但数据正确,而ReadFile接收不到奇偶校验错误时的数据,希望各位高手指点。
zhuyue_csdn 2002-01-16
  • 打赏
  • 举报
回复
LRESULT CCOMRCVView::OnCommNotify(WPARAM wParam, LPARAM lParam)
{

//
CCOMRCVDoc* pDoc=GetDocument(); //获取文档类
if(!m_bConnected || (wParam & EV_RXCHAR)!=EV_RXCHAR) // 是否是EV_RXCHAR事件?
{
SetEvent(m_hPostMsgEvent); // 允许发送下一个WM_COMMNOTIFY消息
return 0L;
}
rcvcomm();
SetEvent(m_hPostMsgEvent); // 允许发送下一个WM_COMMNOTIFY消息
return 0L;
}
下面的是一个rcvcomm()函数的代码
DWORD length;
COMSTAT ComStat; //COMSTAT
DWORD dwErrorFlags;
ClearCommError(m_hCom,&dwErrorFlags,&ComStat);
length=min(dwLength, ComStat.cbInQue);
ReadFile(m_hCom,buf,0*1024,&length,&m_osRead);
return length;

1,660

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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