请问我的数组赋给变量显示数据时候,为什么不能更新
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);
那么下次取得还是第一组的数据.第二组的数据是在第一组的数据后面