无法从 lsm9ds0_acc_mag 设备驱动程序读取输出

unable read output from lsm9ds0_acc_mag device driver

我无法找到从 lam9ds0 驱动程序读取传感器输出值的方法 https://github.com/erlerobot/kernel_lsm9ds0/tree/master/i2c

驱动代码可在上面link命名为lsm9ds0_acc_mag.c

任何熟悉设备驱动程序编码的人,请帮助我获取输出值。我是设备驱动程序概念的新手。

我尝试过汇编语言,但它不适合我的项目要求。

安装此 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");
        }
    }