@@ -226,6 +226,7 @@ static void sensor_polling(int argc, char **argv)
226226 rt_sensor_t sensor ;
227227 struct rt_sensor_data data ;
228228 rt_size_t res , i ;
229+ rt_int32_t delay ;
229230
230231 dev = rt_device_find (argv [1 ]);
231232 if (dev == RT_NULL )
@@ -237,6 +238,7 @@ static void sensor_polling(int argc, char **argv)
237238 num = atoi (argv [2 ]);
238239
239240 sensor = (rt_sensor_t )dev ;
241+ delay = sensor -> info .period_min > 100 ? sensor -> info .period_min : 100 ;
240242
241243 if (rt_device_open (dev , RT_DEVICE_FLAG_RDWR ) != RT_EOK )
242244 {
@@ -256,7 +258,7 @@ static void sensor_polling(int argc, char **argv)
256258 {
257259 sensor_show_data (i , sensor , & data );
258260 }
259- rt_thread_mdelay (100 );
261+ rt_thread_mdelay (delay );
260262 }
261263 rt_device_close (dev );
262264}
@@ -268,7 +270,9 @@ static void sensor(int argc, char **argv)
268270{
269271 static rt_device_t dev = RT_NULL ;
270272 struct rt_sensor_data data ;
273+ rt_sensor_t sensor ;
271274 rt_size_t res , i ;
275+ rt_int32_t delay ;
272276
273277 /* If the number of arguments less than 2 */
274278 if (argc < 2 )
@@ -410,6 +414,9 @@ static void sensor(int argc, char **argv)
410414 num = atoi (argv [2 ]);
411415 }
412416
417+ sensor = (rt_sensor_t )dev ;
418+ delay = sensor -> info .period_min > 100 ? sensor -> info .period_min : 100 ;
419+
413420 for (i = 0 ; i < num ; i ++ )
414421 {
415422 res = rt_device_read (dev , 0 , & data , 1 );
@@ -419,9 +426,9 @@ static void sensor(int argc, char **argv)
419426 }
420427 else
421428 {
422- sensor_show_data (i , ( rt_sensor_t ) dev , & data );
429+ sensor_show_data (i , sensor , & data );
423430 }
424- rt_thread_mdelay (100 );
431+ rt_thread_mdelay (delay );
425432 }
426433 }
427434 else if (argc == 3 )
0 commit comments