gpiod - программный асинхронный мониторинг в C++

Я рассматриваю возможность использования интерфейса gpiod на встроенном устройстве Linux с инфраструктурой C++. Проблема в том, что я не встречал примера асинхронного мониторинга ввода с помощью gpiod. В идеале это должно быть что-то вроде gpiomon, но без блокировки.

Я использовал asio (в частности, asio::async_read) с файловыми дескрипторами (fd), чтобы выполнить это, но он выглядит несовместимым с gpiod (связанный вопрос ).

Кроме того, похоже, что смешивание файловых дескрипторов с gpiod является грязным, поскольку строки gpiod назначают внутри собственный fd, который, насколько я вижу, не отображается.

Любые указатели будут оценены.

С уважением,

1 ответ

Помимо блокировки чтения и ожидания по времени, он предоставляет запрос строки, поэтому у вас есть возможность использовать его с любым механизмом асинхронного опроса, подходящим для вашего приложения.

Вlibgpiod v2это черезgpiod::line_request::fd()- ссылкаgpiodcxx/line-request.hpp(входит в состав).

Дляlibgpiod v1это черезgpiod::line::event_get_fd()- ссылкаgpiod.hpp.

Соответствующий вопрос относится к GPIO.sysfsфайловые дескрипторы — старый устаревший API GPIO.libgpiodиспользует новый API символьного устройства и возвращаемыйfdподходят дляpoll()инж.

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