通过上位在int a[0] a[1]中写入了一个浮点数格式,怎么读-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2328|回复: 7

[已解决] 通过上位在int a[0] a[1]中写入了一个浮点数格式,怎么读

[复制链接]
发表于 2021-3-3 14:26 | 显示全部楼层 |阅读模式
本帖最后由 chenguangdong 于 2021-3-4 13:15 编辑

通过上位机 在int a[0]  a[1]中写入了一个4字节的浮点数格式,怎么快速读出来,共用体 会用,还有其他简捷的方式么
 楼主| 发表于 2021-3-3 14:28 | 显示全部楼层
能否使用指针的方式读出啊,怎么写
发表于 2021-3-3 14:55 | 显示全部楼层
int 怎么写浮点数,
发表于 2021-3-3 15:59 | 显示全部楼层
*(float*)&a[0]
 楼主| 发表于 2021-3-4 12:17 | 显示全部楼层
sangshu 发表于 2021-3-3 14:55
int 怎么写浮点数,

例如定义了 modbus从站,保持寄存器区为a[10],从上位写入了浮点40001写入2.03,那么a[0],a[1]里面实际存放的就是浮点数啊
 楼主| 发表于 2021-3-4 13:09 | 显示全部楼层
本帖最后由 chenguangdong 于 2021-3-4 13:23 编辑

谢谢!可行。留个例子,以后看。
#include <SimpleModbusSlave.h>
int holdingRegs[10]; // 定义数组
float a;
int b;
void setup()
{        
  modbus_configure(&Serial, 9600, SERIAL_8E1, 1, 2, 10, holdingRegs);// 设定通讯参数9600,E,8,1,D=1
}
void loop()
{
  modbus_update();
  a=*(float*)&holdingRegs[0];//上位40001写入一个浮点数例如0.12
  b=a*100;
  holdingRegs[3]=b; //读出b=12
}






 楼主| 发表于 2021-3-4 13:32 | 显示全部楼层

学习了下指针也可写成 (float&)a[0]
发表于 2021-3-4 19:01 | 显示全部楼层
chenguangdong 发表于 2021-3-4 13:32
学习了下指针也可写成 (float&)a[0]

float & 是引用类型,只有在 C++ 环境下(例如Arduino)才可以编译通过,常规的 C 编译器(例如KEIL, ICC)就不行了。

float * 是常规的 C 指针,兼容性最好,C/C++ 都可以用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 11:55 , Processed in 0.074725 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表