使用mscomm控件不能正常接受硬件发送来的数据应如何解决??
数据被控件自动分成不规则的几部分!但是使用串口调试精灵调试,
却可以正常接受硬件发送的数据,我接受调试精灵也可以正常接受。
就是不能正常接受硬件直接发送的数据。是不是硬件发送的数据
不是很稳定?应该如何处理??急求解答。请帮忙!!

解决方案 »

  1.   

    mscomm控件有个缓冲区,对比一下波特率及其它相关属性,缓冲区等,另外:建议不要用mscomm做,我以前也遇到过不稳定的情况,有个spind都转反了,自己用Windows的函数与事件做,虽然看起来复杂一些,但维护起来却很不错,全是自己的代码,如果功能的话,看一看《Win95串口通讯》那本书,讲的不错。
      

  2.   

    1.如楼上所建议,还是使用api自己写个串口类吧,或是去网上搜一把,很多,自己拿来看看
    2.如果你非要用mscomm控件的话,也许下面的代码对你有帮助
    OnComm()
    {
       if( MSComm->CommEvent != 2)
        {
         return;
        }
    /*如果你知道要接受的长度话,还可以这么写
       if( MSComm.GetCommEvent() != 2 || MSComm.GetInBufferCount()!= len)
        {
         return;
        }*/
        VARIANT var = MSComm.GetInput();
        ...
        
    }
      

  3.   

    上面有点小错误
    if( MSComm.GetCommEvent() != 2)
        {
         return;
        }
      

  4.   

    楼上的说的很有道理,但是我的数据长度是不确定的,但是在数据里面指定了数据的长度,
    必须解开数据包才能知道数据的长度。好像说mscomm控件也是用的是API函数,只是将函数封装
    起来了。应该没有什么本质的区别吧?
      

  5.   

    没有本质的区别,除非微软留了一手(MSComm是微软的东东)