最近在学习串口编程,这里有2段代码(实现的功能是接收数据)。第一段代码是我照着书上写的,运行时,只要接收数据,系统就报错(好像是系统崩溃了);第二段代码是自己写的,运行时OK.我是个菜鸟,不明白为什么书上、网上基本上都是第一段这样的代码,为什么要
设那么多的变量?嘿嘿各位也帮我看看第一段运行时为什么会报错?请各位给指点迷津。
m_Rstr是编辑框的CString型变量;
m_ctrlComm是MSComm控件的对象;第一段代码:void CMSComm_2Dlg::OnComm() 
{
    if(m_ctrlComm.GetCommEvent()==2) 
    {                        VARIANT variant_inp;
            COleSafeArray safearray_inp;
            LONG len,k;
            BYTE rxdata[2048]; 
            CString strtemp;            variant_inp=m_ctrlComm.GetInput();             safearray_inp=variant_inp;             len=safearray_inp.GetOneDimSize();             for(k=0;k<len;k++)
                   safearray_inp.GetElement(&k,rxdata+k);            for(k=0;k<len;k++)
           {
                BYTE bt=*(char*)(rxdata+k); 
                strtemp.Format("%02X",bt);                m_Rstr+=strtemp;    
           }
UpdateData(FALSE); 
     }}第二段代码:void CMSCommDlg::OnComm() 
{    if(m_ctrlComm.GetCommEvent()==2) 
    {            

VARIANT   a;  a.vt   =   VT_VARIANT; 

a.bstrVal=(_bstr_t)m_ctrlComm.GetInput();

CString   str   = (BSTR)a.pbstrVal;

m_Rstr+=str;

    }

    UpdateData(FALSE); }