项目场景:
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大小相同