Demo
Read time: 1 minute(s)
以下代码片段展示了一个用于传感器轮询的函数
sensor_polling
,可以作为 TSensor
设备的使用参考。sensor_polling
从命令行参数中获取设备名称和读取次数,并读取传感器数据并显示。关于
sensor_polling 命令的代码,详见
kernel/rt-thread/components/drivers/sensors/sensor_cmd.c:static void sensor_polling(int argc, char **argv) { rt_uint16_t num = 10; rt_device_t dev = RT_NULL; rt_sensor_t sensor; struct rt_sensor_data data; rt_size_t res, i; rt_int32_t delay; rt_err_t result; dev = rt_device_find(argv[1]); if (dev == RT_NULL) { LOG_E("Can't find device:%s", argv[1]); return; } if (argc > 2) 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); if (res != 1) { LOG_E("read data failed!size is %d", res); } else { sensor_show_data(i, sensor, &data); } rt_thread_mdelay(delay); } rt_device_close(dev); }