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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [РЕШЕНО]QtSerialPort и виртуальные порты  (Прочитано 12894 раз)
Larry
Гость
« : Апрель 12, 2013, 15:35 »

Добрый день, форумчане. Подскажите пожалуйста как исправить такое (на рисунке). Виртуальные порты с 7-го по 10-ый создаются программой TelitSerialPortMux. Можно конечно убрать эти непонятные задвоения программно, но может быть я неправильно получаю список портов? Вот код:

Код:
void CGPSTerminal::slotUpdateListPorts()
{
    m_ui->m_cbPortList->clear();

    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        m_ui->m_cbPortList->addItem(info.portName());
    }
}

m_ui->m_cbPortList - QComboBox.

« Последнее редактирование: Апрель 12, 2013, 21:09 от Larry » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Апрель 12, 2013, 16:03 »

А диспетчер устройств что показывает?

UPD: Дай ссылку где скачать TelitSerialPortMux
« Последнее редактирование: Апрель 12, 2013, 16:09 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Larry
Гость
« Ответ #2 : Апрель 12, 2013, 16:25 »

вот диспетчер задач..
Записан
Bepec
Гость
« Ответ #3 : Апрель 12, 2013, 16:25 »

У меня такое было правда с другой программкой. Не публичной.

Она создавала 1 виртуальный и 1 замкнутый на него порт.
Записан
Larry
Гость
« Ответ #4 : Апрель 12, 2013, 16:35 »

вот ссылка на программу: http://www.roundsolutions.com/techdocs/driver_tools/SerialPortMux1.09.zip
Записан
Larry
Гость
« Ответ #5 : Апрель 12, 2013, 16:39 »

здесь получается прямой порт, тот что отмечен как третий - через него мы работаем напрямую с устройством (прошивка, обновление скриптов), когда в нем программа не запустилась и виртуальные через которые идет работа с запущенным устройством.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Апрель 12, 2013, 19:02 »

Нужно ли наличие реального оборудования для того чтобы создать и открыть виртуальные порты?
Или можно просто установить эту программулину, насоздавать порты и типа пользоваться ими?
Записан

ArchLinux x86_64 / Win10 64 bit
Larry
Гость
« Ответ #7 : Апрель 12, 2013, 20:52 »

Извините не смог сразу ответить, младшую укладывал. Наличие реального оборудования не надо, они и так будут присутствовать в системе после запуска...мы работаем с модемами GE863-GPS (GPS-трекеры). Просто установите эту программу и запустите ее и можно будет посмотреть что не так.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Апрель 12, 2013, 20:57 »

Итак, посмотрел я как там что.

Оказывается, что реально устройства типа NULL_COMx реально присутствуют в системе.

Имеют "дружественное имя"  типа "Eltima VSPort Controlling Device for COMx".

Реально эти устройства могут и не являться последовательными портами, определить это
невозможно в силу того, что действительные "виртуальные" порты (с именами COMx) и эти
"контрол" девайсы (с именами NULL_COMx) имеют один и тот же GUID.

Цитировать
   // Eltima Virtual Serial Port Driver v4 GUID
    { 0xCC0EF009, 0xB820, 0x42F4, { 0x95, 0xA9, 0x9B, 0xFA, 0x6A, 0x5A, 0xB7, 0xAB } },

Этот GUID не является стандартным для последовательных портов или модемов (см. MSDN),
а является "высером" фирмы-производителя драйвера/тулзы TelitSerialPortMux.

Энумерация устройств осуществляется по предопределенным GUID-ам.

Цитировать
   // Windows Ports Class GUID
    { 0x4D36E978, 0xE325, 0x11CE, { 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 } },
    // Virtual Ports Class GUID (i.e. com0com and etc)
    { 0xDF799E12, 0x3C56, 0x421B, { 0xB2, 0x98, 0xB6, 0xD3, 0x64, 0x2B, 0xC8, 0x78 } },
    // Windows Modems Class GUID
    { 0x4D36E96D, 0xE325, 0x11CE, { 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 } },
    // Eltima Virtual Serial Port Driver v4 GUID
    { 0xCC0EF009, 0xB820, 0x42F4, { 0x95, 0xA9, 0x9B, 0xFA, 0x6A, 0x5A, 0xB7, 0xAB } },
    // Advanced Virtual COM Port GUID
    { 0x9341CD95, 0x4371, 0x4A37, { 0xA5, 0xAF, 0xFD, 0xB0, 0xA9, 0xD1, 0x96, 0x31 } },

Из которых первый и третий - стандартные. Остальные - это "высеры" производителей,
поэтому я ничего сделать не могу в этой ситуации. Ты сам отсеивай "левые " девайсы.
Записан

ArchLinux x86_64 / Win10 64 bit
Larry
Гость
« Ответ #9 : Апрель 12, 2013, 21:09 »

спасибо большое, значит будем выкидывать их выкидывать так, не сложно Улыбающийся, тогда будем считать, что вопрос решен Улыбающийся...еще раз спасибо.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #10 : Апрель 12, 2013, 22:33 »

Похоже, все-таки, что эти NULL_COMx устройства все-таки являются последовательными портами.

Я сделал патч для енумерации с использованием через GUID интерфейсы, что более корректно.

Парни, проверьте кто-нибудь у себя, правильно ли оно теперь перечисляет, все-ли находит как раньше?

Патч: https://codereview.qt-project.org/#change,53725

Нужно статистику набрать Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
Larry
Гость
« Ответ #11 : Апрель 12, 2013, 23:36 »

есть вопрос: а как применить патч Непонимающий, правда опробовать смогу только в понедельник....
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #12 : Апрель 13, 2013, 09:03 »

Нужен Git:

Цитировать
$git clone git://gitorious.org/qt/qtserialport.git
$cd qtserialport
$git fetch https://codereview.qt-project.org/p/qt/qtserialport refs/changes/25/53725/2 && git checkout FETCH_HEAD

И пересобрать.

Или вручную копипастить, там изменений мало:
https://codereview.qt-project.org/#patch,sidebyside,53725,2,src/serialport/qserialportinfo_win.cpp
Записан

ArchLinux x86_64 / Win10 64 bit
Larry
Гость
« Ответ #13 : Апрель 13, 2013, 10:52 »

спасибо, в понедельник попробую...git я тоже использую, очень удобно, когда и на работе и дома что-то делаешь...в команде пока не работал Улыбающийся
Записан
Larry
Гость
« Ответ #14 : Апрель 15, 2013, 11:04 »

Пересобрал библиотеку и вроде бы все осталось по старому, т.е. все то что было, так и осталось...значит почищу ручками:)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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