COlesafearray 问题 串口通讯

if(m_com.get_CommEvent()==2)
{
    char str[1024]={0};
    CAddtionDlg DT;
    long k;
    VARIANT InputData=m_com.get_Input();    //读缓冲区
    COleSafeArray fs;
    fs=InputData;   //VARIANT型变À量转换为COleSafeArray型变量
    for(k=0;k<fs.GetOneDimSize();k++)
    fs.GetElement(&k,str+k);    //转换为BYTE型数组
    int tempDec[6],sum;
        for(k=0;k<fs.GetOneDimSize();k++)
    {
        BYTE bt=*(char*)(str+k);
        tempDec[k]=(int)bt;
        CString strtemp;
        strtemp=DT.Dec2Hex(tempDec[k]);
    }
    }

    我用MScomm写了两个串口 出现的问题是 当打开第一个串口的时候 其数据是4.2ms刷新一次 这时候再打开第二个串口 或者 按其他按钮两次 或者点击程序界面之外 程序就崩溃 查中断是在

    _AFXDISP_INLINE DWORD COleSafeArray::GetDim()
{ return ::SafeArrayGetDim(parray); }

_AFXDISP_INLINE DWORD COleSafeArray::GetElemSize()
{ return ::SafeArrayGetElemsize(parray); }

请问是哪里出了问题呢?

http://wenda.tianya.cn/question/65bde3626d895684