硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1143|回复: 13
收起左侧

[LVGL] 关于浮点数据如何无损转化为整型数据用于GUI显示波形

[复制链接]

44

主题

564

回帖

701

积分

金牌会员

积分
701
发表于 2022-7-5 08:47:29 | 显示全部楼层 |阅读模式
GUI用的是LVGL,需要做个波形显示功能,但是提供的数据是浮点型的如下图1,调试用Keil Array Visualization看到的波形如下波形图2。
问题就是在GUI中显示波形,需要的数据类型是整型,那如何把这个浮点数无损的转化为整型数据格式,然后能真实还原出波形。
波形数据.png 图1


波形.png

图2
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2022-7-5 09:08:44 | 显示全部楼层
放大呗,比如0.15175128,放大成15175128就行了。
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
 楼主| 发表于 2022-7-5 09:24:16 | 显示全部楼层
ghslfgkkl88 发表于 2022-7-5 09:08
放大呗,比如0.15175128,放大成15175128就行了。

就目前我能想到的就是放大,但是问题就是最后这些数值还是需要对应的落在200*400区域的显示屏内,才能显示出波形。最后还又要缩小?
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2022-7-5 09:29:18 | 显示全部楼层
ou513 发表于 2022-7-5 09:24
就目前我能想到的就是放大,但是问题就是最后这些数值还是需要对应的落在200*400区域的显示屏内,才能显 ...

一步到位啊,放大的时候放大到对应的区域就行
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
 楼主| 发表于 2022-7-5 10:05:07 | 显示全部楼层
ghslfgkkl88 发表于 2022-7-5 09:29
一步到位啊,放大的时候放大到对应的区域就行

老大,不太理解你的意思,思维比较愚钝,能帮忙说的清楚一点吗?
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2022-7-5 10:08:31 | 显示全部楼层
无损转换,不可能的。。。因为浮点格式侧重数值范围,整形格式侧重数值精度。
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
 楼主| 发表于 2022-7-5 10:33:36 | 显示全部楼层
caicaptain2 发表于 2022-7-5 10:08
无损转换,不可能的。。。因为浮点格式侧重数值范围,整形格式侧重数值精度。

这个其实是明白的,意思是如何转换能尽量的还原数据,
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2022-7-5 10:49:38 | 显示全部楼层
ou513 发表于 2022-7-5 10:33
这个其实是明白的,意思是如何转换能尽量的还原数据,

chart 用事件绘制  可以自定义显示小数点到x.y 然后 chart范围和你数值一样放大即可。
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2022-7-5 10:50:32 | 显示全部楼层
数据和chart范围都同比例放大,然后chart得x和y显示数值 缩小显示即可
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
 楼主| 发表于 2022-7-5 11:02:34 | 显示全部楼层
qq57379550 发表于 2022-7-5 10:50
数据和chart范围都同比例放大,然后chart得x和y显示数值 缩小显示即可

你指的是改变这个chart的range这个范围吗?
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -300, 300);
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2022-7-5 11:04:40 | 显示全部楼层
ou513 发表于 2022-7-5 11:02
你指的是改变这个chart的range这个范围吗?
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -300 ...

是的
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2022-7-5 11:33:46 | 显示全部楼层
ou513 发表于 2022-7-5 10:05
老大,不太理解你的意思,思维比较愚钝,能帮忙说的清楚一点吗?

就是比如你要把0.15175128显示到400这里,那你0.15175128*2635就行了。没必要0.15175128*100000000得到15175128,然后15175128/37937。
回复

使用道具 举报

2

主题

180

回帖

186

积分

初级会员

积分
186
发表于 2022-7-5 11:50:52 | 显示全部楼层
QQ截图20220705114941.png 都是可以知道龙哥一的
回复

使用道具 举报

44

主题

564

回帖

701

积分

金牌会员

积分
701
 楼主| 发表于 2022-7-5 14:38:42 | 显示全部楼层
qq57379550 发表于 2022-7-5 11:50
都是可以知道龙哥一的

正在调试中~~~……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-22 09:16 , Processed in 0.205328 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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