vc的例子Serial里有,我的ReadBuffer函数几乎是它的ReadCommBlock的照抄,只需要换几个参数,好用啊!

解决方案 »

  1.   

    建议先用 ClearCommError(m_pComm->GetSafeHandle(),&dwInfo,&cs);获得接受到的数据的大小cs.cbInQue,
      

  2.   

     to _STLer(VC++):
    这样一来似乎也不对,得到的数据越来越大,直到和我开的串口的input缓存一样大就不再增大了。这是我的代码: 
    我先在前面的定义:      SetupComm(hCom, 32265, 1024 ) ;
    在后面时钟函数里写:
                           DWORD Count;
         COMSTAT cs;
         ClearCommError(hCom, &Count, &cs);
         char puf[322656];
         _ltoa(cs.cbInQue,puf,10);
         m_text.Empty();
                  m_text=puf;
                  m_stext.SetWindowText(m_text);
      

  3.   

    to  gpmn() :
    你能不能说的详细点?“vc的例子serial”是哪里?
      

  4.   

    My God ,pool man 
    多买基本书吧。到处都有串行化的例子
      

  5.   

    ClearCommError( m_hIDComDev, &dwErrorFlags, &ComStat );
    if( !ComStat.cbInQue ) return( 0 ); dwBytesRead = (DWORD) ComStat.cbInQue;

    bReadStatus = ReadFile( m_hIDComDev, buffer, dwBytesRead, &dwBytesRead, &m_OverlappedRead );
      

  6.   

    同意gpmn
    我现在也在作串口,也是ReadCommBlock(m_comDev,buffer,100);
    应该可以使用
    要注意 不要设置为硬件流控制
    并且,最重要的是在读之前一定要等一下,等到数据已经写到接受缓冲中这些都是我这几天的经验,我的老板的脸色也不好看