Sfoglia il codice sorgente

[sensor] fixed sensor cmd delay time

luhuadong 4 anni fa
parent
commit
cc15a1b59c
1 ha cambiato i file con 10 aggiunte e 3 eliminazioni
  1. 10 3
      components/drivers/sensors/sensor_cmd.c

+ 10 - 3
components/drivers/sensors/sensor_cmd.c

@@ -226,6 +226,7 @@ static void sensor_polling(int argc, char **argv)
     rt_sensor_t sensor;
     struct rt_sensor_data data;
     rt_size_t res, i;
+    rt_int32_t delay;
 
     dev = rt_device_find(argv[1]);
     if (dev == RT_NULL)
@@ -237,6 +238,7 @@ static void sensor_polling(int argc, char **argv)
         num = atoi(argv[2]);
 
     sensor = (rt_sensor_t)dev;
+    delay  = sensor->info.period_min > 100 ? sensor->info.period_min : 100;
 
     if (rt_device_open(dev, RT_DEVICE_FLAG_RDWR) != RT_EOK)
     {
@@ -256,7 +258,7 @@ static void sensor_polling(int argc, char **argv)
         {
             sensor_show_data(i, sensor, &data);
         }
-        rt_thread_mdelay(100);
+        rt_thread_mdelay(delay);
     }
     rt_device_close(dev);
 }
@@ -268,7 +270,9 @@ static void sensor(int argc, char **argv)
 {
     static rt_device_t dev = RT_NULL;
     struct rt_sensor_data data;
+    rt_sensor_t sensor;
     rt_size_t res, i;
+    rt_int32_t delay;
 
     /* If the number of arguments less than 2 */
     if (argc < 2)
@@ -410,6 +414,9 @@ static void sensor(int argc, char **argv)
             num = atoi(argv[2]);
         }
 
+        sensor = (rt_sensor_t)dev;
+        delay  = sensor->info.period_min > 100 ? sensor->info.period_min : 100;
+
         for (i = 0; i < num; i++)
         {
             res = rt_device_read(dev, 0, &data, 1);
@@ -419,9 +426,9 @@ static void sensor(int argc, char **argv)
             }
             else
             {
-                sensor_show_data(i, (rt_sensor_t)dev, &data);
+                sensor_show_data(i, sensor, &data);
             }
-            rt_thread_mdelay(100);
+            rt_thread_mdelay(delay);
         }
     }
     else if (argc == 3)