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

时间:2015-07-22 09:02:14

标签: c driver

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

驱动程序代码位于上面名为 lsm9ds0_acc_mag.c

的链接中

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

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

1 个答案:

答案 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");
        }
    }