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);

解决方案 »

  1.   

    楼主,这啥?
    m_strRXData
    这种问题自己断点的能力一定要培养起来了啊
      

  2.   

    m_strRXData是我在一个编辑框显示的字符串;我现在的目的是从整个字符串中提取几位送到m_EDITIN和m_EDITOUT显示出来,现在问题是能显示出来 ,但是当下组数据来的时候,m_EDITIN和m_EDITOUT2个变量的编辑框数据部更新的。
      

  3.   

    请问是不是下面的原因,我觉得他好像把m_strRXData变成字符后temp就只能是他的值了 下次的时候m_strRXData虽然更新了,但temp并没改变??????
    for(int i=0;i<m_strRXData.GetLength();i++)
    {
    temp[i]=m_strRXData.GetAt(i);
      

  4.   

    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);
    那么下次取得还是第一组的数据.第二组的数据是在第一组的数据后面
      

  5.   

    hdg3707,你好 我试了下你的方法,首先m_strRXData数据已经显示不全(位数不够或者是出现乱码),相应的去取得几位值也是不对了 有时候变成0.
    请问下我不清空能实现吗,比如我在新数据来了 就追加到后面然后直接去取到追加的数据里面的而不是从0开始取数?
      

  6.   

    已经做到了更新了 在数组下标修改对应位就可以实现了。
    不过,hdg3707,要感谢你啊  ,大神啊,还的听你的哦,要清空操作,否则溢出出错。