概述
MSComm控件过程中内存溢出和GetOneDimSize出错的问题
现在做的一个项目需要实现上位机和单片机的串口通信,为了方便,使用了MSComm控 件,但写程序时在处理接收数据遇到了问题,程序可以编译通过,但运行的过程中,程序只要接收到串口发来的数据,就会弹出内存溢出提示错误:in xx.exe(MFCO42D.DLL);0xC0000005,Acess Violation。处理接收数据部分程序如下:
void CDemoDlg::OnOnCommMscomm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
//COleVariant myVar;
COleSafeArray safearray_inp;
long i=0;
long len;
char rxdata[200];
CString tmp;
switch (m_mscomm.GetCommEvent())
{
case 1:
break;
case 2:
//表示接收缓冲区内有字符
{
variant_inp=m_mscomm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize(); //问题出在这
for (i=0;i
{
safearray_inp.GetElement(&i,&rxdata[i]);
}
rxdata[i]='