Буфер устройства IIO всегда нулевой

Я использую датчик IMU под названием LSM6DSL с драйверами iio. Они работают нормально, если я отображаю необработанные значения с помощью команды:

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

Я что-то пропустил? Дайте мне знать, если вам нужна дополнительная информация.

1 ответ

Решение

Наверное, я нашел ответ и не обратил внимания на эффекты библиотеки ncurses (извините, что не упомянул, что я ее использовал).

Я переместил эти функции до инициализации ncurses, и теперь буфер создан успешно.

Другие вопросы по тегам