1. 我用MSComm控件接收数据时CPU使用率很高!怎么解决?2. 程序如下:
void CTempletDlg::OnOnComm()
{
if(comm.GetCommEvent()==2)
{
RxdAll();
}
}
void CTempletDlg::RxdAll()
{
COleVariant myVar;
COleSafeArray safearray_inp;
LONG k,len;
BYTE rxdata[1024];
CString temp,RD; while(comm.GetInBufferCount()>0)//判断缓冲区
{
myVar.Attach(comm.GetInput());
safearray_inp=myVar;
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);
temp.Format("%02X ",bt);
m_Rxd = m_Rxd + temp;
} }
m_Rxd=m_Rxd+"\r\n";
m_ctrRXD.SetWindowText(m_Rxd); if(m_ctrRXD.GetLineCount()>=100)//超过100行清空
{
m_Rxd.Empty();
UpdateData(FALSE);
}
}
void CTempletDlg::OnOnComm()
{
if(comm.GetCommEvent()==2)
{
RxdAll();
}
}
void CTempletDlg::RxdAll()
{
COleVariant myVar;
COleSafeArray safearray_inp;
LONG k,len;
BYTE rxdata[1024];
CString temp,RD; while(comm.GetInBufferCount()>0)//判断缓冲区
{
myVar.Attach(comm.GetInput());
safearray_inp=myVar;
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);
temp.Format("%02X ",bt);
m_Rxd = m_Rxd + temp;
} }
m_Rxd=m_Rxd+"\r\n";
m_ctrRXD.SetWindowText(m_Rxd); if(m_ctrRXD.GetLineCount()>=100)//超过100行清空
{
m_Rxd.Empty();
UpdateData(FALSE);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货