新手求助,用CMSCOMM控件做的一个读取下位机数据的小软件,现在每1秒下位机发送过来一个数据,我将该数据的第4,5个字节取出,显示在EDIT1中,这个可以实现,在0.5后有另外一个数据,我想显示显示在EDIT2中,请问各位大在ONCOMM函数中,我该如何去解决。

解决方案 »

  1.   

    贴1上我的部分代码,这是第每1秒发送过来的数据,我想加个在500毫秒后,接收另外一个7自字节数据的3,4显示在EDIT2中void CLztfView::OnOnComm() 
    {
    // TODO: Add your control notification handler code here
    VARIANT Input;
    CString temp;
    long   k, c;
    char len=0;
    COleSafeArray OleArray;//构造一个任何类型的空数组.
    int rxdata[2048];
    if (2==m_ctrlComm.GetCommEvent())
    {
     Input=m_ctrlComm.GetInput(); //读缓冲区 
     OleArray=Input;//VARIANT型变量转换为ColeSafeArray型变量
     len=OleArray.GetOneDimSize();//获取接收到的字符数.也可使用m_com.GetInBufferCount()获取字符数.
    if(len==7)
    {
     //for (k=0;k<len;k++)
      k=4;
    OleArray.GetElement(&k,rxdata+k);//将OleArray数组中第K个元素赋予BYTE数组中第K个元素.
      bt =*(char*)(rxdata+k);//字节数组元素转换字符型

     c=3;
    OleArray.GetElement(&c,rxdata+c);//将OleArray数组中第K个元素赋予BYTE数组中第K个元素.
       at=*(char*)(rxdata+c);//字节数组元素转换字符型
     tt=at*256+bt;
    }
    if (tt>=2000)
    {
    temp.Format("超量程");
    }  else if (tt>0&&tt<2000)
      {
      temp.Format("%0.1f",tt/10.0);
      }
      else if (tt>-50&&tt<0)
      {
     
      }
    m_strRXData=temp;
           
     
    }
    UpdateData(FALSE);//成员变量的值在控制中体现出来.当为TRUE

    }