1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
int (int argc, char** argv) hw_get_module(SENSORS_HARDWARE_MODULE_ID, (hw_module_t const**)&module); sensors_open(&module->common, &device); return module->methods->open(module, SENSORS_HARDWARE_POLL, (struct hw_device_t**)device); count = module->get_sensors_list(module, &list); for (int i=0 ; i<count ; i++) device->activate(device, list[i].handle, 0); for (int i=0 ; i<count ; i++) { device->activate(device, list[i].handle, 1); device->setDelay(device, list[i].handle, ms2ns(10)); }
do { int n = device->poll(device, buffer, numEvents); for (int i=0 ; i<n ; i++) { const sensors_event_t& data = buffer[i];
switch(data.type) { case SENSOR_TYPE_ACCELEROMETER: case SENSOR_TYPE_MAGNETIC_FIELD: case SENSOR_TYPE_ORIENTATION: case SENSOR_TYPE_GYROSCOPE: case SENSOR_TYPE_GRAVITY: case SENSOR_TYPE_LINEAR_ACCELERATION: case SENSOR_TYPE_ROTATION_VECTOR: printf("sensor=%s, time=%lld, value=<%5.1f,%5.1f,%5.1f>n", getSensorName(data.type), data.timestamp, data.data[0], data.data[1], data.data[2]); break;
case SENSOR_TYPE_LIGHT: case SENSOR_TYPE_PRESSURE: case SENSOR_TYPE_TEMPERATURE: case SENSOR_TYPE_PROXIMITY: case SENSOR_TYPE_RELATIVE_HUMIDITY: case SENSOR_TYPE_AMBIENT_TEMPERATURE: printf("sensor=%s, time=%lld, value=%fn", getSensorName(data.type), data.timestamp, data.data[0]); break;
default: printf("sensor=%d, time=%lld, value=<%f,%f,%f, ...>n", data.type, data.timestamp, data.data[0], data.data[1], data.data[2]); break; } } } while (1); for (int i=0 ; i<count ; i++) device->activate(device, list[i].handle, 0); sensors_close(device); return device->common.close(&device->common);
|
近期评论