OpenHarmony开发者论坛
标题:
驱动上报传感器数据长度为4时,数据接收存在异常
[打印本页]
作者:
shixiaocheng
时间:
2024-2-7 09:31
标题:
驱动上报传感器数据长度为4时,数据接收存在异常
【问题描述】
问题现象和发生的背景
编写了一个温度传感器驱动,文件位置//drivers/peripheral/sensor/chipset/temperature/temperature_sht4x.c,在其中读取传感器数据并设置传感器时间上报时设置数据长度为4时,如
```
event
.
sensorId
=
SENSOR_TAG_TEMPERATURE
;
event
.
mode
=
SENSOR_WORK_MODE_REALTIME
;
event
.
dataLen
=
4
;
event
.
data
=
(
uint8_t
*
)
&
temperature
;
```
客户端读取数据代码
```
int8_t
*
sensorData
=
(
uint8_t
*
)
event
->
data
;
printf
(
"
sensor sensorId[
%d
] data[0x
%x
], data len:
%d
\n
"
,
sensorId
,
*
(
uint32_t
*
)
sensorData
,
dataLen
);
```
读取数据异常
内核日志如下,数据没有问题。
(, 下载次数: 14)
上传
点击文件名下载附件
客户端hilog数据如下,存在异常
相关的代码,截图,日志信息
(, 下载次数: 15)
上传
点击文件名下载附件
请问有人知道是什么原因吗
我尝试过的解决方法和结果
我想要达到的结果
【运行环境】
硬件:rk3566
ROM版本:4.0r
DevEvoStudio版本:
SDK版本:
作者:
shixiaocheng
时间:
2024-2-19 16:12
经过测试,发现字节数为4时,在客户端读取时会读取到float类型的数值,内部是不是进行了这样一个操作:uint_32 数值除以10.0-->float
作者:
论坛小助手
时间:
2024-2-29 16:18
当前驱动上报到HDI的数据会从float转成uint8,客户端则需要自行将数据从uint8再转换成float
作者:
shixiaocheng
时间:
2024-2-29 17:30
回复
论坛小助手
: 不对吧,我看了源码,应该是先从uint8转到float,客户端读到的就是float类型
作者:
论坛小助手
时间:
2024-3-1 14:41
回复
shixiaocheng
: 驱动获取到数据后,上报给hdi之前先转换成了unit8,hdi收到的数据类型就是unit8的,然后上报给客户端之后,客户端自己转换成float的
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5