IIO 设备缓冲区始终为空
IIO device buffer always null
我在 iio 驱动程序中使用名为 LSM6DSL 的 IMU 传感器。如果我用命令显示原始值,它们工作正常:
cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw
然后我决定使用 libiio,这样我就可以从 C 程序中读取所有这些值:
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
我错过了什么吗?如果您需要更多信息,请告诉我。
我猜我找到了答案,我没有注意ncurses库的效果(抱歉没有提到我正在使用它)。
我在 ncurses 初始化之前移动了这些函数,现在缓冲区创建成功。
我在 iio 驱动程序中使用名为 LSM6DSL 的 IMU 传感器。如果我用命令显示原始值,它们工作正常:
cat /sys/bus/iio/devices/iio:device0/in_accel_x_raw
然后我决定使用 libiio,这样我就可以从 C 程序中读取所有这些值:
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
我错过了什么吗?如果您需要更多信息,请告诉我。
我猜我找到了答案,我没有注意ncurses库的效果(抱歉没有提到我正在使用它)。
我在 ncurses 初始化之前移动了这些函数,现在缓冲区创建成功。