LSM6DSL と呼ばれる IMU センサーを iio ドライバーと共に使用しています。次のコマンドで生の値を表示すると、正常に動作します。
cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw
次に、C プログラムからこれらすべての値を読み取ることができるように、libiio を使用することにしました。
struct iio_context *context = iio_create_local_context();
struct iio_device *device = iio_context_get_device(context, 1);
struct iio_channel *chan = iio_device_get_channel(device, 0);
iio_channel_enable(chan);
if (iio_channel_is_scan_element(chan) == true)
printf("OK\n");
struct iio_channel *chan2 = iio_device_get_channel(device, 1);
iio_channel_enable(chan2);
struct iio_buffer *buff = iio_device_create_buffer(device, 1, true);
if (buff == NULL)
{
printf("Error: %s\n", strerror(errno));
return (1);
}
そして、これは結果です:
OK
Error: Device or resource busy
何か不足していますか?さらに情報が必要な場合はお知らせください。