采集编辑框控件的浮点型数据,怎么处理成二进制传输?怎样放在数组里传输到下位机?最好提示两句代码谢谢

解决方案 »

  1.   

    你的下位机认识浮点数吗? 如果认识的话可以这样:// float f 假设是你采集到的浮点数
    void* buffer = &f;
    int bufferLength = sizeof(float);
    // 或者你已经申请好了数组 buffer,你可以:
    memcpy(buffer, &f, sizeof(float));// 你可以直接将这个数组传过去,或者使用memcpy将其拷贝到
    // 包含你通信协议定义的结构体或者数组中// 下端可以这样接收:
    float f = *((float*) buffer);
    //  或者这样
    float f = 0;
    memcpy(&f, buffer, sizeof(float));以上的方法不光适用float类型, 任意类型都可以这样搞
      

  2.   

    你的意思是不是通信协议里使用5个字节表示浮点数。
    比如 10.0,你是不是告诉通信协议, 100,并告诉他小数位数有1位。
    我估计你是这个意思。我不知道下面这个方法是否可以。
    1、确定一个精度,比如精确到小数点后4位
    2、要确定一个最大值,就是说浮点数不能太大。你的下位机既然不能直接处理浮点数,我想
       它肯定会有一个最大值的。
    之后你可以这样:
    // float f 是你的浮点数, buffer 是你的数组起始位置
    int n = f * 10000;
    int len = sizeof(int);   // int 就是4字节
    memcpy(buffer, &n, len);
    buffer += sizeof(int);
    memcpy(buffer, &len, 1); //  这里固定为4就可以了// 另外,我觉得你没有在这里描述清楚你的通信协议, 通信协议里对于这个浮点数
    // 肯定还有其他的描述
      

  3.   

    可能是想要这个吧.char szText[16] = "123.4";
    float f = atof(szText);