小弟现在在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);现在的问题是:怎样使内存不再不停地增加?
另:在编一个较大的程序时,怎样释放内存?(我编的程序都不会释放内存)不知我把问题说清楚了没有?
谢谢!
而且,通信速度越快,内存增加的就越快。比如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);现在的问题是:怎样使内存不再不停地增加?
另:在编一个较大的程序时,怎样释放内存?(我编的程序都不会释放内存)不知我把问题说清楚了没有?
谢谢!
m_mscomm.SetInBufferCount(0);
m_mscomm.SetOutBufferCount(0);了吗?
再设一下
m_mscomm.SetInBufferSize(1024);
m_mscomm.SetOutBufferSize(1024);
看看
CString CMSComm::GetInput()
{
CString result;
InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
当然在头文件也要修改,然后在使用的时候可以使用CString csInput=m_mscomm.GetInput();