QtSerialPort, Проблема сборки QtSerialPort под Windows |
Здравствуйте, гость ( Вход | Регистрация )
QtSerialPort, Проблема сборки QtSerialPort под Windows |
kuzulis |
30.8.2013, 10:30
Сообщение
#81
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Цитата(Евген) При работе с виртуальным COM-портом (по USB) вызывает регулярный БСОД. Случайно чип не от Prolific, не PL2303? Потому что при работе с PL2303 в разных терминалках мы тоже иногда получали BSOD, но это не относилось вообще к Qt. Попробуй обновить дрова к своему виртуальному COM-порту. Цитата(Евген) В описании QtSerialPort не заявлена поддержка Windows 8. Посему вопрос - Как обстоят дела с совместимостью проекта с Вынь8 и какие там могут быть грабли? Все поддерживается и работает хорошо. Грабель не наблюдаем.. |
|
|
Гость_Евген_* |
3.9.2013, 6:54
Сообщение
#82
|
Гости |
Цитата(Евген) При работе с виртуальным COM-портом (по USB) вызывает регулярный БСОД. Случайно чип не от Prolific, не PL2303? Потому что при работе с PL2303 в разных терминалках мы тоже иногда получали BSOD, но это не относилось вообще к Qt. Попробуй обновить дрова к своему виртуальному COM-порту. Цитата(Евген) В описании QtSerialPort не заявлена поддержка Windows 8. Посему вопрос - Как обстоят дела с совместимостью проекта с Вынь8 и какие там могут быть грабли? Все поддерживается и работает хорошо. Грабель не наблюдаем.. Выяснились некоторые подробности. Чип Profilic PL2303. БСОД видел, из описания понятно только, что ругалась винда на файл ser2pl64.sys. После обновления драйверов вроде бы пока в норме, но тестовый период небольшой. А в чем проблема была при этом чипе? |
|
|
kuzulis |
3.9.2013, 11:53
Сообщение
#83
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
А в чем проблема была при этом чипе? В BSOD! Там то-ли дрова кривые, толи еще что-то. Но это было под Win7 раньше. После обновления на последние дрова (типа WDF), проблема вроде исчезла. PS: Также есть еще одна фишка в том, что этот чип имеет разные модификации, и часто встречается модификация (самая дешёвая и древняя), для которой нет дров для Win8 (т.е. эта модификация не поддерживается больше Пролификом). Там на сайте Prolific про это написано. Поэтому помогает откат на старые драйвера (не старые, а самые последние) от Win7, т.е. они работают тоже в Win8. Но для этого нужно немного пошаманить. Так что мой совет - используйте чип FTDIxxx (предпочтительнее) или CPxxx. |
|
|
Гость_Евген_* |
4.9.2013, 6:40
Сообщение
#84
|
Гости |
А в чем проблема была при этом чипе? В BSOD! Там то-ли дрова кривые, толи еще что-то. Но это было под Win7 раньше. После обновления на последние дрова (типа WDF), проблема вроде исчезла. PS: Также есть еще одна фишка в том, что этот чип имеет разные модификации, и часто встречается модификация (самая дешёвая и древняя), для которой нет дров для Win8 (т.е. эта модификация не поддерживается больше Пролификом). Там на сайте Prolific про это написано. Поэтому помогает откат на старые драйвера (не старые, а самые последние) от Win7, т.е. они работают тоже в Win8. Но для этого нужно немного пошаманить. Так что мой совет - используйте чип FTDIxxx (предпочтительнее) или CPxxx. Увы, выбор виртуальников заказчиками не в нашей власти .. там вообще - как повезет и что попадется. Про дрова понятно, включили в поставку. Спасибо. |
|
|
marsel |
4.9.2013, 15:38
Сообщение
#85
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 29.1.2013 Пользователь №: 3693 Спасибо сказали: 3 раз(а) Репутация: 0 |
Здравствуйте kuzulis.
Подскажите пожалуйста возможно ли в QSerialPort из под Windows получить дескриптор (handle) com порта, который возвращает CreateFile. Просто необходимо изменить время ожидания у микросхемы FTDI(Виртуальный com порт). У неё есть библиотека, с помощью которой можно изменить это время ожидания. Но необходим дескриптор (handle) com порта. http://www.ftdichip.com/Support/Knowledgeb...atencytimer.htm #include "ftd2xx.h" FT_HANDLE ftHandle; UCHAR LatencyTimer;//***Время ожидания FT_SetLatencyTimer(ftHandle, LatencyTimer); |
|
|
Алексей1153 |
4.9.2013, 18:58
Сообщение
#86
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
marsel, уточни вопрос, при чём тут хендл порта ?
для изменения задержки нужен хендл устройства конвертера, установленного в системе http://www.ftdichip.com/Support/Knowledgeb...atencytimer.htm нужные функции можно вызвать, импортировав их из dll динамически offtop и как показала практика, напрямую библиотеку юзать нет необходимости. Устройство при подключении появляет в системе виртуальный ком-порт, его открываешь как обычно и как обычно с ним работаешь кстати, в диспетчере устройств можно полазить по свойствам самого устройства (где-то в списке USB устройств). Сейчас под рукой нет, не могу точно сказать Сообщение отредактировал Алексей1153 - 4.9.2013, 18:59 |
|
|
marsel |
5.9.2013, 9:35
Сообщение
#87
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 29.1.2013 Пользователь №: 3693 Спасибо сказали: 3 раз(а) Репутация: 0 |
marsel, уточни вопрос, при чём тут хендл порта ? для изменения задержки нужен хендл устройства конвертера, установленного в системе http://www.ftdichip.com/Support/Knowledgeb...atencytimer.htm нужные функции можно вызвать, импортировав их из dll динамически offtop и как показала практика, напрямую библиотеку юзать нет необходимости. Устройство при подключении появляет в системе виртуальный ком-порт, его открываешь как обычно и как обычно с ним работаешь кстати, в диспетчере устройств можно полазить по свойствам самого устройства (где-то в списке USB устройств). Сейчас под рукой нет, не могу точно сказать Да handle устройства , наверно неправильно выразился. Как вручную выставлять я знаю. Хотелось бы программно. Если использовать WinAPI тогда всё понятно, но как это сделать используя QSerialPort HANDLE descriptor; нужен из class QSerialPortPrivate. Возможно ли его каким нибудь образом получить? Кратко вопрос такой. Как получить дескриптор устройства в QSerialPort (Windows)? или Как изменить время ожидания(FTDI) из QSerialPort ? |
|
|
Алексей1153 |
5.9.2013, 10:00
Сообщение
#88
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
marsel, Qt к ОС в общем случае не привязан. Драйвер относится к системе, а класс работает с абстракцией - интерфейсом ком порта
так что, сомневаюсь, что класс умеет менять настройки драйвера |
|
|
kuzulis |
5.9.2013, 10:24
Сообщение
#89
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Непонятен вопрос какое HANDLE необходимо.
1) Если необходим HANDLE последовательного порта, который получается при CreateFile("COMxx",...), то эта фича выйдет в Qt5.2 (если не ошибаюсь). Ты можешь подождать или скачать исходники QtSerialPort, где эта фича присутствует, и пересобрать самостоятельно. Вот принятый патч: https://codereview.qt-project.org/#change,51862 Исходники качаешь через Git и потом переключаешься в dev бранч, т.к. эта фича находится именно в dev бранче и еще не вышла. И наслаждаешься. 2) Если необходим HANDLE, который предоставляется вендор-специфичной либой от FTDI, то тут увы, QtSerialPort не имеет к этому никакого отношения. Делай все сам. UPD: Но тебе нужен п.2., я так понимаю, поэтому я тут ничего не сделаю, т.к. это совершенно другое API от FTDI. UPD2: Кроме того, ты можешь установить этот таймаут раз и навсегда, просто перепрошив EEPROM у чипа, и не нужно мучаться (вроде оно возможно, погугли). Сообщение отредактировал kuzulis - 5.9.2013, 10:28 |
|
|
Анна |
9.10.2013, 10:15
Сообщение
#90
|
Активный участник Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4 |
Жаль, что errorString() не перегружена для QSerialPort... по крайней мере в QT-4.8.4 .
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 19:24 |