疑惑 请各位给指点迷津(串口程序)
最近在学习串口编程,这里有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);
}