请教浮点型数据的串行传输 采集编辑框控件的浮点型数据,怎么处理成二进制传输?怎样放在数组里传输到下位机?最好提示两句代码谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的下位机认识浮点数吗? 如果认识的话可以这样:// 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类型, 任意类型都可以这样搞 你的意思是不是通信协议里使用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就可以了// 另外,我觉得你没有在这里描述清楚你的通信协议, 通信协议里对于这个浮点数// 肯定还有其他的描述 可能是想要这个吧.char szText[16] = "123.4";float f = atof(szText); 如何使用外部com 求一个小软件的源码 【All-Friends】不是我不散分,散了也没人接!打击我啊~再不突破100接收量,以后拒绝散分!!!!!!!! 千奇百怪的WM_COMMAND消息 Edit控件显示16进制数 请教:如何写代码修改WINDOWS2000下的系统环境变量,而且不需要重启机器 进来帮我看看吧,MDI问题 非常简单的问题! BCG库依赖windos themes服务 模式对话框 windows api 函数的地址,在不同版本中是固定不变的吗? CListCtrl Report 怎么保证插入的信息在第一行?
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类型, 任意类型都可以这样搞
比如 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就可以了// 另外,我觉得你没有在这里描述清楚你的通信协议, 通信协议里对于这个浮点数
// 肯定还有其他的描述
float f = atof(szText);