首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请教小弟我的数组赋给变量显示数据时候,为什么不能更新

2012-09-09 
请问我的数组赋给变量显示数据时候,为什么不能更新if(m_ctrlComm.GetCommEvent()2) //判断引起OnComm时

请问我的数组赋给变量显示数据时候,为什么不能更新
if(m_ctrlComm.GetCommEvent()==2) //判断引起OnComm时间的原因,***********有字符
{//如果是接收到特定个字节数,则读取接收到的数据
/*********************************此处加入自己的处理代码*********************************/
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //数据类型转化成safearray
len=safearray_inp.GetOneDimSize(); //得到数据有效长度
for(k=0;k<len;k++)
{
safearray_inp.GetElement(&k,rxdata+k); //得到接接收到的数据放到BYTE型数组rxdata里
}
for(k=0;k<len;k++) //将数组转化成CString变量
{
BYTE bt = *(char*)(rxdata+k); //字符型
stremp1.Format("%02d",bt);//将字符送人变量存放
stremp.Format("%02X",bt);//16进制
m_strRXData+=stremp;
//for(int i=k,j=0;i<k+2,j<2;i++,j++)
  // {
  // temp[k+i]=*(char*)((LPCTSTR)stremp+j);//将接收到的一个十六进制字节的高低位分别存入数组temp
  // }

}
for(int i=0;i<m_strRXData.GetLength();i++)
{
temp[i]=m_strRXData.GetAt(i);
;
}

  char tmp[5];
  char tmp1[5];
  tmp[0]=temp[2];
  tmp[1]=temp[3];
  tmp[2]=temp[4];
  tmp[3]=temp[5];
  tmp[4]='\0';
  m_EDITIN=strtol(tmp,NULL,16);
   

  tmp1[0]=temp[18];
  tmp1[1]=temp[19];
  tmp1[2]=temp[20];
  tmp1[3]=temp[21];
  tmp1[4]='\0';
  m_EDITOUT=strtol(tmp1,NULL,16);
  // m_EDITTOL=m_EDITIN+ m_EDITOUT;

 //for{}
} //if{}

UpdateData(FALSE);


[解决办法]
m_strRXData.Empty();//在这加上这句
for(k=0;k<len;k++) //将数组转化成CString变量
{
....
}
你没清空m_strRXData,所以下组数据来时是追加到这个变量的后面了,而你却还:
for(int i=0;i<m_strRXData.GetLength();i++)
{
temp[i]=m_strRXData.GetAt(i);
那么下次取得还是第一组的数据.第二组的数据是在第一组的数据后面

热点排行