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);
{//如果是接收到特定个字节数,则读取接收到的数据
/*********************************此处加入自己的处理代码*********************************/
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);
解决方案 »
- 求助:_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate, &strDefault);函数作用
- 【急】关于导出类的继承问题
- 这个函数运行时为什么会出错?
- 中文版的VC6应该安装哪个sp6呀?
- 为何Cannot open precompiled header file:
- 请教一个有关于对话框上控件重画的问题!谢谢!
- CTabCtrl 窗口 滚动
- CString的转化问题,odbc的一个问题
- MFC ActiveX Control工程中添加button、edit和richedit等控件
- 如何动态改变窗口形状
- getRegionData()函数在win7 aero效果下失效,有无替代方案?
- 窗体上的字体,怎么改变
m_strRXData
这种问题自己断点的能力一定要培养起来了啊
for(int i=0;i<m_strRXData.GetLength();i++)
{
temp[i]=m_strRXData.GetAt(i);
for(k=0;k<len;k++) //将数组转化成CString变量
{
....
}
你没清空m_strRXData,所以下组数据来时是追加到这个变量的后面了,而你却还:
for(int i=0;i<m_strRXData.GetLength();i++)
{
temp[i]=m_strRXData.GetAt(i);
那么下次取得还是第一组的数据.第二组的数据是在第一组的数据后面
请问下我不清空能实现吗,比如我在新数据来了 就追加到后面然后直接去取到追加的数据里面的而不是从0开始取数?
不过,hdg3707,要感谢你啊 ,大神啊,还的听你的哦,要清空操作,否则溢出出错。