Как обнаружить разъединение USB-устройства в соответствии с Linux/QT/C++

Мне действительно нужно чаще следить за StackOverflow. Я текущий сопровождающий mplot3d. Причина, по которой различные приемы, которые обычно работают на обычных 2D-графиках, не работают для 3D-графиков, заключается в том, что mplot3d изначально был написан с жестко заданными значениями по умолчанию. Также были ошибки в том, как mplot3d вычислял угол для рендеринга надписей.

v1.1.0 содержит несколько исправлений для улучшения положения вещей. Я исправил просчет углов меток осей и внес некоторые коррективы в интервал. В следующем выпуске я хотел бы, чтобы трехмерные оси занимали больше, чем стандартное расстояние между осями, поскольку стандартное задание было разработано с учетом того, что метки тиков и метки осей находились бы вне осей, что не относится к mplot3d , Поскольку расстояния в mplot3d определяются относительными пропорциями, из-за меньшего пространства для работы метки сближаются.

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

Кроме того, v1.1.0 содержит много обновлений API mplot3d. Пожалуйста, ознакомьтесь с пересмотренной документацией здесь .

5
задан 3 June 2009 в 21:08
поделиться

3 ответа

Возможно, вы захотите использовать HAL (уровень аппаратной абстракции freedesktop.org ).

В будущем вы, вероятно, захотите хотите использовать DeviceKit . Это проект, исправляющий многие проблемы с HAL. Однако он еще не принят во всех основных дистрибутивах (я думаю, только в Fedora), поэтому вы, вероятно, не захотите использовать его прямо сейчас.

Изменить: Как сказал Джич, вы можете использовать udev также. Я бы не предлагал этого, поскольку это намного более низкий уровень и сложнее программировать, но если задержка очень важна, это может быть лучшим вариантом.

3
ответ дан 14 December 2019 в 13:45
поделиться

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

Я использую правила udev, настроенные в '/ etc / udev / rules.d / ', которые запускают различные сценарии. Когда USB-устройство подключается / отключается, я запускаю сценарий, который отправляет сигнал HUP моему двоичному файлу. Поскольку мои требования могут справиться с небольшой задержкой, это отлично работает для меня.

Но я хочу сказать, что, возможно, есть библиотека udev, с которой вы можете ссылаться и регистрировать события программно (вместо скриптов).

Надеюсь, это поможет ... удачи!

1
ответ дан 14 December 2019 в 13:45
поделиться

Не забывайте, что у вас здесь две проблемы:

  • Обнаружение вставки / удаления устройства
  • Правильное завершение вашего приложения.

Первую проблему решил Zifre.

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

0
ответ дан 14 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: