"); //-->
今天利用了union实现float和char的相互转换,也就是说实现了一个float型数据转换成它对应的4个字节的uchar型,同时把4个字节的uchar型可以转换成由它们组成的float型。主要代码如下:
定义一个成员是uchar和float型的uniom:
union
{
float sub_float;
struct {
uchar b1,b0,b3,b2; //LSB
} sep_float ;
} u_float;
下面两个子函数可以是实现相互转换:
1、float转uchar
void Write_Xram_Float(uint addr,float write_data)
{
u_float.sub_float = write_data;
DatRead[addr+0] = u_float.sep_float.b3;
DatRead[addr+1] = u_float.sep_float.b4;
DatRead[addr+2] = u_float.sep_float.b1;
DatRead[addr+3] = u_float.sep_float.b2;
}
1、uchar转float
float Read_RAM_Float(uint addr)
{
u_float.sep_float_ram.b3 = DatRead(addr+0);
u_float.sep_float_ram.b2 = DatRead(addr+1);
u_float.sep_float_ram.b1 = DatRead(addr+2);
u_float.sep_float_ram.b0 = DatRead(addr+3);
return(u_float.sub_float);
}
我是用串口调试助手监听上位机的Modbus通信数据信息,分析监听到的数据,因为监听到的都是十六进制,所以,一个float由四个字节组成,起初根本不知道它代表的意义,通过上面的转换,我知道了它代表一个参数的值,完成监听工作;
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
量子电池颠覆传统物理定律
首届全国百所高校“凌阳杯”电子竞赛活动
数控直流电源制作
氢气传感器助力检测电池爆炸隐患
数模转换器TQ6122的原理和应用
数显式稳压电源
数模转换和模数转换
从最赚钱公司 Linear 看中国模拟半导体差距
用三端PWM开关电源IC制成的开关电源
蓝牙设备今年将出货59亿台,我国蓝牙产品认证数量世界第一
脉宽调制型开关稳压电源控制器SG3524应用
555高可靠定时起爆器电路图
数字VorI转换器
RF检波器揭秘
日月光:先进封测需求超预期
应用方案 | AI Agent大时代,南芯助力AI PC CPU/GPU提高效能
MUSA获得SGLang主线支持!5月10日北京,AI Meetup等你来
基于RE46C190的光电式烟雾报警器的评估板(用于家用火灾报警器的RE46C190芯片)
程序怎么老进入Enter DebutDABORT
无线遥控激光笔/上下翻页激光笔/RF激光笔
Microchip苹果配件开发工具包
使用低引脚数USB开发工具包(DM164127)在应用中添加USB连接
自制交流自动稳压器
用WS157或WS106制成的小功率微型开关稳压电源
联电22纳米领军动能续旺 组队Intel拼美国制造
致单片机初学者,8051单片机多媒体学习光盘
大学生在学校应该学习哪些电子知识
英伟达旗下NVentures参投医疗AI初创公司 Aidoc,融资 1.5 亿美元
迈向SDV时代:安森美以10BASE-T1S方案加速车载网络统一进程
凭借先进封装与3DFabric 集成,赋能下一代AI计算