<nav id="gb9pn"></nav>

  1. <form id="gb9pn"><legend id="gb9pn"></legend></form>

    <form id="gb9pn"><legend id="gb9pn"><video id="gb9pn"></video></legend></form>
  2. µ±Ç°Î»ÖÃ:Ê×Ò³ > ǶÈëʽÅàѵ > ǶÈëʽѧϰ > ½²Ê¦²©ÎÄ >
    Andriod Sensor ¼Ü¹¹ÉîÈëÆÊÎö
    ʱ¼ä£º2018-08-16×÷Õߣº»ªÇåÔ¶¼û

    1¡¢Android sensor¼Ü¹¹

    Android4.0ϵͳÄÚÖöԴ«¸ÐÆ÷µÄÖ§³Ö´ï13ÖÖ£¬ËüÃÇ·Ö±ðÊÇ£º¼ÓËÙ¶È´«¸ÐÆ÷(accelerometer)¡¢´ÅÁ¦´«¸ÐÆ÷(magnetic field)¡¢·½Ïò´«¸ÐÆ÷(orientation)¡¢ÍÓÂÝÒÇ(gyroscope)¡¢»·¾³¹âÕÕ´«¸ÐÆ÷(light)¡¢Ñ¹Á¦´«¸ÐÆ÷(pressure)¡¢Î¶ȴ«¸ÐÆ÷(temperature)ºÍ¾àÀë´«¸ÐÆ÷(proximity)µÈ¡£

    AndroidʵÏÖ´«¸ÐÆ÷ϵͳ°üÀ¨ÒÔϼ¸¸ö²¿·Ö£º

    ¸÷²¿·ÖÖ®¼ä¼Ü¹¹Í¼ÈçÏ£º

    2¡¢Sensor HAL²ã½Ó¿Ú

    GoogleΪSensorÌṩÁËͳһµÄHAL½Ó¿Ú£¬²»Í¬µÄÓ²¼þ³§ÉÌÐèÒª¸ù¾Ý¸Ã½Ó¿ÚÀ´ÊµÏÖ²¢Íê³É¾ßÌåµÄÓ²¼þ³éÏó²ã£¬AndroidÖÐSensorµÄHAL½Ó¿Ú¶¨ÒåÔÚ£ºhardware/libhardware/include/hardware/sensors.h

    ¶Ô´«¸ÐÆ÷ÀàÐ͵͍Ò壺

    ´«¸ÐÆ÷Ä£¿éµÄ¶¨Òå½á¹¹ÌåÈçÏ£º

    ¸Ã½Ó¿ÚµÄ¶¨Òåʵ¼ÊÉÏÊǶԱê×¼µÄÓ²¼þÄ£¿éhw_module_tµÄÒ»¸öÀ©Õ¹£¬Ôö¼ÓÁËÒ»¸öget_sensors_listº¯Êý£¬ÓÃÓÚ»ñÈ¡´«¸ÐÆ÷µÄÁбí¡£

    ¶ÔÈÎÒâÒ»¸ösensorÉ豸¶¼»áÓÐÒ»¸ösensor_t½á¹¹Ì壬Æä¶¨ÒåÈçÏ£º

    ÿ¸ö´«¸ÐÆ÷µÄÊý¾ÝÓÉsensors_event_t½á¹¹Ìå±íʾ£¬¶¨ÒåÈçÏ£º

    ÆäÖУ¬sensorΪ´«¸ÐÆ÷µÄ±êÖ¾·û£¬¶ø²»Í¬µÄ´«¸ÐÆ÷Ôò²ÉÓÃunion·½Ê½À´±íʾ£¬sensors_vec_t½á¹¹ÌåÓÃÀ´±íʾ²»Í¬´«¸ÐÆ÷µÄÊý¾Ý£¬sensors_vec_t¶¨ÒåÈçÏ£º

    SensorÉ豸½á¹¹Ìåsensors_poll_device_t£¬¶Ô±ê×¼Ó²¼þÉ豸hw_device_t½á¹¹ÌåµÄÀ©Õ¹£¬Ö÷ÒªÍê³É¶ÁÈ¡µ×²ãÊý¾Ý£¬²¢½«Êý¾Ý´æ´¢ÔÚstruct sensors_poll_device_t½á¹¹ÌåÖУ¬pollº¯ÊýÓÃÀ´»ñÈ¡µ×²ãÊý¾Ý£¬µ÷ÓÃʱ½«±»×èÈû¶¨ÒåÈçÏ£º

    ¿ØÖÆÉ豸´ò¿ª/¹Ø±Õ½á¹¹Ì嶨ÒåÈçÏ£º

    3¡¢Sensor HALʵÏÖ(ÒÔLM75ζȴ«¸ÐÆ÷ΪÀý×Ó)

    £¨1£©´ò¿ªÉ豸Á÷³Ìͼ

    £¨2£©ÊµÏÖ´úÂë·ÖÎö

    ÔÚ´úÂëÖк¬ÓÐÁ½¸ö´«¸ÐÆ÷ADCµçλÆ÷ºÍLM75ζȴ«¸ÐÆ÷£¬ËùÒÔÔÚsensor.cÖУ¬Ê×ÏÈÐèÒª¶¨Òå´«¸ÐÆ÷Êý×édevice_sensor_list[]£¬Æäʵ¾ÍÊdzõʼ»¯struct sensor_t½á¹¹Ì壬³õʼ»¯ÈçÏ£º

    ¶¨Òåopen_sensorsº¯Êý£¬À´´ò¿ªSensorÄ£¿é£¬´úÂëÈçÏ£º

    ÔÚÕâ¸ö·½·¨ÖУ¬Ê×ÏÈÐèҪΪhw_device_t·ÖÅäÄÚ´æ¿Õ¼ä£¬²¢¶ÔÆä³õʼ»¯£¬ÉèÖÃÖØÒª·½·¨µÄʵÏÖ¡£

    control_open_data_source()´ò¿ª´«¸ÐÆ÷²¢Ê¹ÄÜÉ豸£º

    µ÷ÓÃsensor__data_poll·½·¨¶ÁÈ¡Êý¾Ý£º

    /*ÂÖѯ¶ÁÈ¡Êý¾Ý*/
            static int sensors__data_poll(struct sensors_data_context_t *dev, sensors_data_t * values)
            {
                int n;
                int mag;
                float temp;
                char buf[10];
                while (1) {
                if(count % 3 == 2) // ¶ÁÈ¡£Á£Ä£ÃÖµ
                {
                    if( read(dev->event_fd[0], &mag, sizeof(mag)) < 0)
                    {
                       LOGE("read adc error");
                    }else{ 
                    dev->sensors[ID_MAGNETIC_FIELD].magnetic.v[0] =(float)mag; 
                    LOGE("read adc %f\n",(float)mag);
                    *values = dev->sensors[ID_MAGNETIC_FIELD];
                    values->sensor = ID_MAGNETIC_FIELD;
                    count++;
                    }
                    usleep(500000);
                    return ID_MAGNETIC_FIELD;
                    }
                    else if(count%3 == 1) //¶Áȡζȴ«¸ÐÆ÷Öµ
                     {
                    memset(buf, 0 ,sizeof(buf));
                    if((n = read(dev->event_fd[1], buf, 10)) < 0)
                    {
                        LOGE("read temp error");
                        }else{
                        buf[n - 1] = '\0';
                        temp =(float) (atoi(buf) / 1000);
                        dev->sensors[ID_TEMPERATURE].temperature = temp;
                        LOGE("read temp %f\n",temp);
                        *values = dev->sensors[ID_TEMPERATURE];
                        values->sensor = ID_TEMPERATURE;
                        count++;
                    }
                        close(dev->event_fd[1]);
                        dev->event_fd[1]= open("/sys/bus/i2c/devices/0-0048/temp1_input", O_RDONLY);
                        usleep(500000);
                        return ID_TEMPERATURE;
                   }
                   else if(count%3 == 0) //¶ÁÈ¡·½Ïò´«¸ÐÆ÷Ä£ÄâÖµ
                     {
                        LOGI("read orientation\n");
                        /* fill up data of orientation */
                        dev->sensors[ID_ORIENTATION].orientation.azimuth = x + 5;
                        dev->sensors[ID_ORIENTATION].orientation.pitch = y + 5;
                     &nbnbsp;  dev->sensors[ID_ORIENTATION].orientation.roll = z + 5;
                        *values = dev->sensors[ID_ORIENTATION];
                        values->sensor = ID_ORIENTATION;
                        count++;
                        x += 0.0001; y += 0.0001; z += 0.0001;
                        usleep (500000);
                        return ID_ORIENTATION;
                  }
                }
            }

    SensorÏà¹Ø¼¼Êõ£º

    Sensor¿ò¼Ü½á¹¹·ÖÎö

    Sensor HAL¿ò¼Ü·ÖÎö


    ·¢±íÆÀÂÛ

    È«¹ú×Éѯµç»°£º400-611-6270£¬Ë«ÐÝÈÕ¼°½Ú¼ÙÈÕÇëÖµçÖµ°àÊÖ»ú£º15010390966

    ÔÚÏß×Éѯ£º ²ÜÀÏʦQQ£¨3337544669£©£¬ ÐìÀÏʦQQ£¨1462495461£©£¬ ÁõÀÏʦ QQ£¨3108687497£©

    ÆóÒµÅàѵǢ̸רÏߣº010-82600901£¬ÔºÐ£ºÏ×÷Ǣ̸רÏߣº010-82600350£¬ÔÚÏß×Éѯ£ºQQ£¨248856300£©

    Copyright 2004-2018 »ªÇåÔ¶¼û½ÌÓý¼¯ÍÅ °æÈ¨ËùÓÐ £¬¾©ICP±¸16055225ºÅ£¬¾©¹«º£Íø°²±¸11010802025203ºÅ

    welcome¹º²ÊÖÐÐÄ