Russian Qt Forum

Qt => Общие вопросы => Тема начата: Silver_swift от Февраль 26, 2012, 13:16



Название: Перечисление COM-портов в Windows
Отправлено: Silver_swift от Февраль 26, 2012, 13:16
Доброго времени суток всем!

Мне нужно получить список всех устройств подключенных к ПК через COM порты. Пробую сделать это через реестр, точнее через HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/SERIALCOMM. regedit показывает мне два COM-порта COM1 и COM2 соответственно.
Использую QSettings:

Код:
 QSettings *Settings = new QSettings("HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM",QSettings::NativeFormat); 
list=Settings->value("HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM","null").toStringList();
Пробовал по-разному и всегда получаю null.
В связи с чем вопросы:
 - что вообще хранится в виндовском реестре?
 - как это считать с помощью QSettings?
 - если нельзя то какие есть способы в том числе и платформозависмые?
Подскажите куда копать :)


Название: Re: Перечисление COM-портов в Windows
Отправлено: kuzulis от Февраль 26, 2012, 13:34
http://gitorious.org/qserialdevice/qserialdevice/trees/2.0

см. класс SerialPortInfo


Название: Re: Перечисление COM-портов в Windows
Отправлено: mutineer от Февраль 26, 2012, 14:15
казалось бы - причем тут GUI...


Название: Re: Перечисление COM-портов в Windows
Отправлено: Silver_swift от Февраль 26, 2012, 17:31
Цитировать
см. класс SerialPortInfo
Смотрю содержимое serialportinfo_win.cpp темный лес вызовов на winAPI и подозреваю, что мне все это не нужно. Мне бы просто считать ветку реестра. Но для этого хорошо бы знать что из себя представляют записи реестра. Не хотелось лопатить MSDN но кажется туда дорога.

Цитировать
казалось бы - причем тут GUI...
QSettings лежит в модуле QtCore, который входит в QtGui и поскольку раздела по QtCore на этом форуме я не обнаружил единственным логичным местом для создания этой темы я посчитал этот раздел... Ага.


Название: Re: Перечисление COM-портов в Windows
Отправлено: pastor от Февраль 26, 2012, 17:57
К GUI это действительно неимеет никакого отношения. Есть раздел "Общие вопросы".


Название: Re: Перечисление COM-портов в Windows
Отправлено: kuzulis от Февраль 26, 2012, 18:39
Цитировать
Смотрю содержимое serialportinfo_win.cpp темный лес вызовов на winAPI и подозреваю, что мне все это не нужно.
Я тебе привел готовый к испоьлзованию класс, все уже сделано давно до тебя - бери и пользуйся. И не нужен MSDN и т.п.

Ппц..


Название: Re: Перечисление COM-портов в Windows
Отправлено: Silver_swift от Февраль 26, 2012, 19:28
Я знаю, что такое SerialPortInfo и QExtSerialPortEnumerator. Но мне нужен другой способ. Потому я и решил задать вопрос здесь.

Помогаю другу с заданием в инсте и суть задания в том, чтобы написать именно свою функцию. Помимо копания msdn идеи есть?




Название: Re: Перечисление COM-портов в Windows
Отправлено: LisandreL от Февраль 26, 2012, 19:45
Помимо копания msdn идеи есть?
Смотреть в SerialPortInfo какие поля вас интересуют и в serialportinfo_win.cpp смотреть как эти поля заполняются.
И да, если у вас 7-ка учитывайте, что при включённом UAC'е и приложении без манифеста вы можете не совсем из реестра читать данные и соответственно не совсем актуальные.