我现在使用单片机和PC通信,用VC做一个界面显示接收到的数据,我使用龚建伟老师的串口通信程序能够完成十六进制在一个接收框中显示全部数据。但是我想把这些数据显示在不同的编辑框中,比如,第一个编辑框是电压,第二个编辑框是温度,怎么能够完成这个功能呢?我以前是做硬件的对VC不是很懂,望大家指教。

解决方案 »

  1.   

    不同的数据使用不同的编辑框,
    不同的编辑框关联不同的变量 CString类型的变量获取到数据后
    UpdateData(false)
      

  2.   

    这是我的代码
     void CSCommTestDlg::OnComm() 
    {
    // TODO: Add your control notification handler code here
    VARIANT variant_inp;   
        COleSafeArray safearray_inp;   
        LONG len,k;   
        BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.   
        CString strtemp,strdata[2];   
         if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符   
        {             ////////以下你可以根据自己的通信协议加入处理代码   
            variant_inp=m_ctrlComm.GetInput(); //读缓冲区 
            safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量   
            len=safearray_inp.GetOneDimSize(); //得到有效数据长度   
            for(k=0;k<len;k++)   
                safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组   
            for(k=0;k<len;k++) //将数组转换为Cstring型变量   
            {   
                BYTE bt=*(char*)(rxdata+k); //字符型   
                //strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放   
                if(m_ctrlHexDisplay.GetCheck())
    strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp 存放,注意这里加入一个空隔
    else
    strtemp.Format("%c",bt); //将字符送入临时变量strtemp 存放

    m_strRXData+=strtemp; //加入接收编辑框对应字符串    
            }   
        } 


      UpdateData(FALSE); //更新编辑框内容 
    }
    这样可以在一个编辑框中显示收到的数据,比如我单片机发送的是十六进制的00 01 02 03,我想把00 01显示在电压的编辑框中,02 03显示在表示温度的编辑框中怎么去显示?
      

  3.   

    现在可以了 一楼二楼的都可以用,我现在还有个问题,我想加上一个Button,来接收数据,按一下后就接收一次数据,怎么去实现这个函数啊?