Windows ce 环境光照传感器中断状态寄存器未更新

Windows ce 环境光照传感器中断状态寄存器未更新,windows-ce,sensors,light,ambient,Windows Ce,Sensors,Light,Ambient,我正在使用WinCE 7 Visual Studio 2008并为ALS编写驱动程序代码。我编写了以下代码,用于读取中断状态寄存器,并在中断发生时显示消息。但是,它只能随机工作几次。例如,当我用手关闭传感器时,我只收到几次信息,然后,即使它必须中断并继续循环,它也不会进入data==1条件。阈值计时器为0。AlsRegRead函数执行I2CRead。pAlsDrvInfo是驱动程序上下文。添加\u ALS\u INT\u状态为0。DumpAlsRegistry函数将打印除寄存器0x0之外的所有寄

我正在使用WinCE 7 Visual Studio 2008并为ALS编写驱动程序代码。我编写了以下代码,用于读取中断状态寄存器,并在中断发生时显示消息。但是,它只能随机工作几次。例如,当我用手关闭传感器时,我只收到几次信息,然后,即使它必须中断并继续循环,它也不会进入data==1条件。阈值计时器为0。AlsRegRead函数执行I2CRead。pAlsDrvInfo是驱动程序上下文。添加\u ALS\u INT\u状态为0。DumpAlsRegistry函数将打印除寄存器0x0之外的所有寄存器的内容


请告诉我哪里出错。

我已经找到了这背后的原因。这背后有两个问题,这两个问题同样重要

1传感器处于部分损坏状态

这需要一些延迟。因此,我在循环的开始添加了Sleep1000

    while(1)
    {
        Sleep(1000);

        AlsRegRead(pAlsDrvInfo, ADD_ALS_INT_STATUS, &data, sizeof(UINT8));

        if (data == 1)
        {
            DumpAlsRegistry(pAlsDrvInfo);
            RETAILMSG(1,(L"Interrupt Received...\r\n"));
        }

    }
谢谢

    while(1)
    {
        Sleep(1000);

        AlsRegRead(pAlsDrvInfo, ADD_ALS_INT_STATUS, &data, sizeof(UINT8));

        if (data == 1)
        {
            DumpAlsRegistry(pAlsDrvInfo);
            RETAILMSG(1,(L"Interrupt Received...\r\n"));
        }

    }