0

我正在开发一个使用 MSComm ActiveX 与串口通信的接口:通过串口从传感器获取数据并显示在 VS 2005 的编辑框中。

但是每次运行程序,得到一定的数据后(大约1~2秒),程序就会卡住,我必须使用任务管理器停止。似乎缓冲区已满,但我已经使用 put_InBufferCount(0) 清除了缓冲区(如果我使用正确的话)。

另一个可能的原因是编辑框的大小 SetLimitText(10000000000000000); 但它也不起作用。

提前谢谢了!

这是 OnCommMscomm1() 中的代码

void CwtsDlg::OnCommMscomm1()
{
    // TODO: Add your message handler code here

    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048]; //An 8-bit integer that is not signed.
    CString strtemp;

if(m_MSComm.get_CommEvent()==2) //2 means there is data in the buffer
    {
        CString m_strRe;
        variant_inp=m_MSComm.get_Input(); //Read buffer
        m_MSComm.put_InBufferCount(0);//clear the buffer
        safearray_inp=variant_inp; //ColeSafeArray Covert
        len=safearray_inp.GetOneDimSize(); //get safe data length
        for(k=0;k<len;k++)
            safearray_inp.GetElement(&k,rxdata+k);//convert to BYTE array
        for(k=0;k<len;k++) //convert array to Cstring
        {
            BYTE bt=*(char*)(rxdata+k); //character
                strtemp.Format(L"%02X ",bt); //put characters into temperary varibles with space
            m_strRe+=strtemp; //the data in this buffer
        }
        AppendLineToMultilineEditCtrl(m_editReceive,m_strRe);//append data to edit box
    }
}
4

0 回答 0