read失败报错1 Operation not permitted

文章讲述了在AndroidHAL层开发中遇到的问题,即设备数据写入成功但读取时出现Operationnotpermitted错误,原因是read函数的len参数与设备实际发送的数据大小不符。解决方法是确保后端发送数据大小与前端read的len一致。
摘要由CSDN通过智能技术生成

项目场景:

Android HAL层开发


问题描述

Android能够发数据到设备,但是读取设备数据的时候报错操作不允许,文件描述符的读写权限和设备的读写权限都给了
也就是wirte成功但是
read失败报错:1
read err=1 ,Operation not permitted

@Override
	std::unique_ptr<manager[]> pollBuffer;
	len = sizeof(manager);
	read(fd, pollBuffer.get(), len)

原因分析:

read中的参数len与设备发送的数据大小不一致
Android中的manager数据格式为紧凑型的结构体
后端发送的数据结构体不是紧凑型导致两者不相同


解决方案:

将后端发送的数据大小与前端统一,就是设备write返回的值需要与前端read(… … len)的len大小相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值