Russian Qt Forum
Ноябрь 24, 2024, 00:32
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
С/C++
>
собственная реализация hotplug на с++
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: собственная реализация hotplug на с++ (Прочитано 7272 раз)
igor_bogomolov
Гость
собственная реализация hotplug на с++
«
:
Июль 16, 2009, 20:13 »
Приветствую всех.
Как реализавать собственную программу "горячего" обнаружения устройств в системе (hotplug).
Задача чисто абстрактная, не привязанная, пока, ни к каким конкретным устройствам и интерфейсам.
Т.е. нужно реализовать некий абстрактный интерфейс и набор классов, используя которые в дальнейшем можно будет описать реальные устройства с различными интерфейсами, которые можно подключать/отключать во время работы прораммы, которая в свою очередь все это коректно отслеживала.
Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)
Мне нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования???
Помогите с идейками. Не знаю с какого конца браться.
Записан
Rcus
Гость
Re: собственная реализация hotplug на с++
«
Ответ #1 :
Июль 16, 2009, 20:19 »
Ну для начала посмотреть как это работает в существующих решениях, например kdelibs/Solid
Записан
igor_bogomolov
Гость
Re: собственная реализация hotplug на с++
«
Ответ #2 :
Июль 16, 2009, 21:25 »
Огромное спасибо за ссылку, то что надо. Буду разбираться.
P.S. Если есть еще какие мысли, буду очень признателен.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: собственная реализация hotplug на с++
«
Ответ #3 :
Июль 16, 2009, 21:48 »
В linux есть Hardware Abstraction Layer -
HAL
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: собственная реализация hotplug на с++
«
Ответ #4 :
Июль 16, 2009, 22:10 »
>>В linux есть Hardware Abstraction Layer - HAL
это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием.
Записан
Юра.
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: собственная реализация hotplug на с++
«
Ответ #5 :
Июль 16, 2009, 22:26 »
Цитата: lit-uriy от Июль 16, 2009, 22:10
>>В linux есть Hardware Abstraction Layer - HAL
это сильно низкий уровень, Игорю нужен прикладной, для работы некой софтины с промоборудованием.
это как раз довольно высокий уровень. Получить список оборудования и делать обнаружение новых устройств он может, следовательно на его основе можно написать что-то своё. На нём сделано автообнаружение устройств в KDE3, когда выскакивает диалог с выбором действий в зависимости от вставленного устройства. По-мойму как раз оно.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: собственная реализация hotplug на с++
«
Ответ #6 :
Июль 16, 2009, 23:57 »
AX, вполне возможно, я про него (HAL) лишь читал.
Записан
Юра.
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: собственная реализация hotplug на с++
«
Ответ #7 :
Июль 17, 2009, 07:49 »
1. вот тут есть альтернатива HAL :
http://broadcast.oreilly.com/2009/02/vl-hot-a-non-polling-alternati.html
2. можно использовать udev
Это что касаемо Linux
Что касаемо винды - может из реестра брать инфу? Не?
Ешё по HAL есть примеры на ЛОР
Цитировать
Мне нужно понять в теории, как построить такую систему, как производить опрос/поиск оборудования. И как сделать систему легко расширяемой. Т.е. сделали некое новое устройство, мы создаем класс для него, унаследованный от некого абстрактного базового класса описывающего в общем виде любое устройство. Добавляем его в список поддерживаемого оборудования после чего оно должно определяться и работать. (Это мое скромное понимание задачи, как в реальности работают подобные системы я не знаю)
а зачем что-то придумывать - если это уже все есть? все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот!
и тут нужно еще писать свой драйвер ...
«
Последнее редактирование: Июль 17, 2009, 07:58 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: собственная реализация hotplug на с++
«
Ответ #8 :
Июль 17, 2009, 08:15 »
udev более низкий уровень по сравнению с HAL'ом.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: собственная реализация hotplug на с++
«
Ответ #9 :
Июль 17, 2009, 08:25 »
а ему только линух и надо.
Записан
Юра.
igor_bogomolov
Гость
Re: собственная реализация hotplug на с++
«
Ответ #10 :
Июль 17, 2009, 17:59 »
Цитата: kuzulis от Июль 17, 2009, 07:49
а зачем что-то придумывать - если это уже все есть? все поддерживается самими ОС ! Зачем писать новое приложение? Я не понял шот!
Есть набор оборудования (плат) собственного производства. Они объединяются в некую единую систему. В эту систему входит также встраеваемая процессорная плата, на которой установлена ос Linux. Посредством некоторых интерфейсов (I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут), мы можем получать доступ к нашему оборудованию. Сам Linux про это оборудование ничего не знает и определить их не может. Вот и стоит задача написания некой собственной реализации hotplug.
На данный момент нужно абстрогироваться от конкренной реализации оборудования и интерфейсов. Надо построить некую абстрактную архетиктуру, которую дальше можно будет расширять уже конкретной реализацией.
Цитата: igor_bogomolov
Мне нужно продумать уровень абстракции. Но я не знаю с чего начать, нет опыта. Какую необходимую реализацию нужно задать для устройства, какую для интерфейса, как их увязывать. Как правильно организовать цикл обнаружения оборудования ? ? ?
Буду рад любой помощи.
Записан
Rcus
Гость
Re: собственная реализация hotplug на с++
«
Ответ #11 :
Июль 17, 2009, 18:13 »
oh... а я наивно полагал что вопрос касается юзерленда
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: собственная реализация hotplug на с++
«
Ответ #12 :
Июль 17, 2009, 20:26 »
Цитировать
Сам Linux про это оборудование ничего не знает и определить их не может.
Так для этого нужно написать драйвер, создайте правила , и все должно получится
К примеру FM тюнеры через I2C вроде управляются. Может есть смысл в этом направлении посмотреть (т.е как реализовано там)?
Цитировать
(I2C, MPI(это даже и не знаю пока что за интерфейс) и еще может какие будут),
так может все на PCI будет висеть
Попахивает системным программированием ИМХО
«
Последнее редактирование: Июль 17, 2009, 20:31 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...