Russian Qt Forum
Май 04, 2024, 23:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QextSerialEnumerator не видит порты  (Прочитано 15647 раз)
gf59
Гость
« : Сентябрь 22, 2009, 22:13 »

Всем доброго времени суток!
Мы решили написать утилитку для работы с прибором, который подключается через USB-COM.
При подключении прибора ему назначается порт COM 3.

Для работы с ком-портом скачали библиотеку qextserialport 1.2 alpha
Начали разбирать примеры, и у меня оказалось, что пример Enumerator (который перечисляет доступные ком-порты) ничего не видит!
Создал свой собственный проект, и в нём такая же ситуация.

Причём у коллеги этот же пример полностью работоспособен.

Кто-нибудь сталкивался с такой проблемой?
Связано ли это с QT или ещё с чем-то?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Сентябрь 22, 2009, 22:36 »

А ОСьки у вас одинаковые?
Записан

Юра.
gf59
Гость
« Ответ #2 : Сентябрь 23, 2009, 03:01 »

Про ОС узнаю - напишу
Строка в примере такая:
Код:
QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
И после этого ports.size() возвращает 0.

Делаю всё в виртуальной ОС
Пробовал запустить в реальной - то же самое (и там, и там WinXP, только один хомяк, другой - профессионал)

Других ком-портов в системе нет, только COM3 от USB-COM на приборе
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Сентябрь 23, 2009, 07:39 »

Попробуй библу QSerialDevice - там работает!

ЗЫ: не сочтите за PR Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
gf59
Гость
« Ответ #4 : Сентябрь 23, 2009, 11:32 »

lit-uriy, ОС у нас одинаковые

Цитировать
Попробуй библу QSerialDevice - там работает!
У неё лицензия GPL, а нам не хотелось бы исходники открывать

На реальной машине включил в биосе реальный COM1.
QextSerialEnumerator его увидел. Но прибор на COM3 всё равно не видит
Похоже, что он просто с первого начинает, а на втором заканчивает, если там пусто
Соответственно, если и COM1 нет, то заканчивает сразу

Нашёл вот на английском:
http://code.google.com/p/qextserialport/issues/detail?id=13
Там пишут, что устройство должно быть зарегистрировано с файлом serenum.sys, (видимо чтоб работала связка usb-com)
Советуют подправить inf-файл и GUID в исходниках библиотеки
Сделал, не помогло Грустный
« Последнее редактирование: Сентябрь 23, 2009, 13:08 от gf59 » Записан
FormatCft
Гость
« Ответ #5 : Сентябрь 23, 2009, 14:26 »

kuzulis. А энумирацию делает вами предложенный инструмент?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Сентябрь 23, 2009, 14:38 »

2 gf59: Можешь сам самостоятельно вычитать информацию  о портах (в том числе и виртуальных) из реестра
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
gf59
Гость
« Ответ #7 : Сентябрь 23, 2009, 14:59 »

pastor, спасибо
А в реестре всегда актуальная информация об устройствах?
Записан
Prm
Гость
« Ответ #8 : Сентябрь 23, 2009, 15:05 »

QextSerialEnumerator возвращает только те порты, которые видно в диспетчере устройств (они же и присутствуют в реестре).  Если портов нет - явно проблема в драйверах.

Был случай, стояла плата портов от Advantech, дрова, как в последствии выяснилось, установились криво. В результате, в диспетчере порты не отображались, а терминалка с портами работать могла (ComPump). QextSerialEnumerator также портов не видел. Установили дрова заново - все заработало как надо.

Если в преобразователе USB-COM используется микруха FT232... можно попробовать установить сертифицированные драйвера.
Записан
gf59
Гость
« Ответ #9 : Сентябрь 23, 2009, 15:17 »

Prm, в диспетчере устройств com-порт появился
и потом, другая программа (написанная в BDS) всё нормально видит
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Сентябрь 23, 2009, 16:08 »

Цитировать
kuzulis. А энумирацию делает вами предложенный инструмент?
Должен. Он из реестра читает.
Записан

ArchLinux x86_64 / Win10 64 bit
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #11 : Сентябрь 23, 2009, 16:33 »

pastor, спасибо
А в реестре всегда актуальная информация об устройствах?

Да, актуальная. Можешь сам подключить девайс и глянуть ветвь "HKLM\HARDWARE\DEVICEMAP\SERIALCOMM"
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
gf59
Гость
« Ответ #12 : Сентябрь 23, 2009, 19:48 »

Проблему решил, всем спасибо!
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #13 : Сентябрь 24, 2009, 09:31 »

Проблему решил, всем спасибо!

А поделиться решением с сообществом? Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
gf59
Гость
« Ответ #14 : Сентябрь 24, 2009, 20:44 »

pastor, проблему решил не сам, а с помощью советов сообщества Улыбающийся
Короче, использую QSerialDevice
Ну и из реестра наверное тоже придётся читать

Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 22.