查看: 287|回复: 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++ 都可以用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

Arduino IDE 支持Raspberry Pi Pico开发
Arduino IDE 支持Raspberr
Arduino已经发布了他们的Arduino Nano RP2040 Connect开发板,这是最近发布的Raspberr
小白请教怎么驱动ILI9225 LCD
小白请教怎么驱动ILI9225
在某宝买了块2.2寸的TFT裸屏,没有背板的,驱动芯片是ILI9225G的,我用UNO直接连线,
L298N轉速不夠
L298N轉速不夠
小弟用L298N來操作12V馬達馬達,但是馬達的運轉速度卻沒有達到要求(用三用電表量運作
blinker App 设备过一会就会离线。重启app又恢复
blinker App 设备过一会就
重启后又恢复在线,,esp8266那边肯定没问题
【Arduino】168种传感器模块系列实验(27)---BMP280气压传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表