我无法找到从 lam9ds0 驱动程序读取传感器输出值的方法 https://github.com/erlerobot/kernel_lsm9ds0/tree/master/i2c
驱动程序代码位于上面名为 lsm9ds0_acc_mag.c
的链接中任何熟悉设备驱动程序编码的人,请帮我获取输出值。我是设备驱动程序概念的新手。
我尝试过汇编语言,但这并不适合我的项目要求。
答案 0 :(得分:1)
当安装此lsm9ds0_acc_mag驱动程序时,它会在目录 / dev / input / 下创建相应的事件文件,文件名为 eventx (其中x可以取任何整数价值从1)开始。
读取 / dev / input / eventx 此文件,您将获得X Y和Z方向的加速度计值
我使用了以下代码
#define ACCELEROMETER "/dev/input/event2"
struct input_event event;
U32 u32X;
U32 u32Y;
U32 u32Z;
void getCaliberate()
{
U16 fd;
ssize_t ret;
fd = open(ACCELEROMETER, O_RDONLY | O_NDELAY);
if(fd == -1)
{
printf("Unable to open /dev");
}
while(ret=read(fd, &event, sizeof(struct input_event)))
{
if (ret != -1)
{
if (event.type == EV_ABS)
{
printf("type = %d\t", event.type);
if (event.code == 0)
u32X = event.value;
if (event.code == 1)
u32Y = event.value;
if (event.code == 2)
u32Z = event.value;
}
}
else
{
printf("Read failed\n");
}
}