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

}
...全文
45 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
界面
创建于2007-09-28

7970

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告