串口通信中的CE_BREAK错误是由什么原因造成的?
ohoff 2007-02-07 02:06:25 我最近编程和一款数字万用表通信,该表使用RS-232接口与电脑相连(万用表端的插口好像是某种光电接口,datasheet上没有具体描述),波特率19200,odd校验,停止位1,数据位7。
我用mscomm控件尝试通信,不料打开串口后即触发1001:comEventBreak错误(input break was detected),无法收到万用表发来的数据。用串口调试助手(gjwtech上的那个)测试,同样收不到数据。我认为我的mscomm控件设置是正确的,因为可以收到其他外设发来的数据。
接着我尝试直接用API编程,使用CreateFile函数正确打开了串口(handle有效),但随即调用ClearCommError()后,lpErrors值为0x0010(据查是CE_BREAK错误,即通信中止)。
随后我用多款串口调试工具进行调试,大部分都不能正常接收数据。但有一款调试软件(铭心软体的)可以正常接收。并出现了一个奇怪的现象:当此软件打开串口接收一次数据,再关闭之后,我用API写的程序也能正确接收万用表的数据了(但使用mscomm控件的仍然不行)。
我想请问大家,为什么会出现comEventBreak错误或者CE_BREAK错误?为什么会出现我说的那种现象?谢谢大家!