小弟现在在MSCOMM控件进行串口通信,需要进行大量的通信,暂定为50毫秒一帧。在调用m_mscomm.GetInput()函数从串口中取出数据时,该程序占用的内存将增加。
    而且,通信速度越快,内存增加的就越快。比如10毫秒一帧时,每秒将增加8k到12k。并且增加之后,内存不会减少。我的设置如下:
m_mscomm.SetCommPort(1);
m_mscomm.SetInputLen(0);
m_mscomm.SetInputMode(1);
m_mscomm.SetSettings("9600,n,8,1");
m_mscomm.SetRThreshold(1);现在的问题是:怎样使内存不再不停地增加?
另:在编一个较大的程序时,怎样释放内存?(我编的程序都不会释放内存)不知我把问题说清楚了没有?
谢谢!

解决方案 »

  1.   

    我试了,将m_mscomm.GetInput()这一句注释掉,就不会有内存(虚拟内存)增加的问题。
      

  2.   

    我单独测试过MSCOMM控件,只要通信加快,运行到m_mscomm.GetInput()这一句就是有问题。
      

  3.   

    你建立链接的时候设
     m_mscomm.SetInBufferCount(0);
     m_mscomm.SetOutBufferCount(0);了吗?
    再设一下
    m_mscomm.SetInBufferSize(1024);
    m_mscomm.SetOutBufferSize(1024);
    看看
      

  4.   

    在MSComm的引入函数中修改GetInput函数,把VARIANT改成CString,即:
    CString CMSComm::GetInput()
    {
    CString result;
    InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
    return result;
    }
    当然在头文件也要修改,然后在使用的时候可以使用CString csInput=m_mscomm.GetInput();
      

  5.   

    在我做如下修改之后,CString csInput是乱码,请问怎样处理?