Russian Qt Forum
Ноябрь 10, 2024, 22:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Дополнительные компоненты
>
Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].
Страниц:
1
...
17
18
[
19
]
20
21
...
88
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА]. (Прочитано 781321 раз)
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #270 :
Декабрь 22, 2010, 19:36 »
Цитата: kuzulis от Декабрь 22, 2010, 19:24
Потому что если открыть порт и выдернуть его - то из этой ветки устройство не исчезнет! На crossplatform.ru уже обсуждали.
Интересно, никогда не наблюдал такого. Кинь ссылку на топик.
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #271 :
Декабрь 22, 2010, 19:53 »
Тут:
http://www.forum.crossplatform.ru/index.php?showtopic=3012&hl=SERIALCOMM&st=40
см. начиная с поста №44 и далее.. №56 и т.п.
Записан
ArchLinux x86_64 / Win10 64 bit
Hvzh
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #272 :
Декабрь 24, 2010, 10:58 »
kuzulis,
Попытался скомпилировать Вашу библиотеку под Виндозой используя MSVC 8.0. Компайлер споткнулся на файле nativeserialengine_win.cpp вот на этой строке:
Код:
if (::WriteFile(this->descriptor, (PCVOID)data, (DWORD)len, &writeBytes, &this->oWrite))
Ему не понравился PCVOID. Все скомпилячилось после замены на LPCVOID. Как я понимаю, PCVOID - это приблуда mingw, для мелкософтовских компайлеров неприемлимая
Записан
Barmaglodd
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #273 :
Декабрь 24, 2010, 11:34 »
Абсолютно точно надо через создание окна ловить события. Сам делал так (правда через QWindow и winEvent), т.к. с QWinEventNotifier (в вашей старой реализации
) периодический access violation в недрах системы обработки событий Qt при извлечении устройства. К тому же такая реализация проще для понимания, а в QWinEventNotifier чёрт ногу сломит.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #274 :
Декабрь 24, 2010, 11:52 »
Цитата: Hvzh
Ему не понравился PCVOID. Все скомпилячилось после замены на LPCVOID. Как я понимаю, PCVOID - это приблуда mingw, для мелкософтовских компайлеров неприемлимая
Ок, исправлю.
Цитата: Barmaglodd
Абсолютно точно надо через создание окна ловить события. Сам делал так (правда через QWindow и winEvent), т.к. с QWinEventNotifier (в вашей старой реализации
) периодический access violation в недрах системы обработки событий Qt при извлечении устройства. К тому же такая реализация проще для понимания, а в QWinEventNotifier чёрт ногу сломит.
Наоборот, через QWinEventNotifier проще!
Тем более, QWinEventNotifier используется в AbstractSerial для уведомлений для сигналов readyRead, dtrChanged и т.п.
Цитировать
периодический access violation в недрах системы обработки событий Qt
так нужно смотреть от чего это.
Я что то передумал что-то менять QWinEventNotifier на WM_blabla, т.к. всё-равно WM_blabla - это костыль (ИМХО).
Понятно, что если отказываться от приватных методов, то заменить в классе SerialDeviceEnumerator на WM_blabla в принципе можно,
НО
не чем заменить QWinEventNotifier в классе AbstractSerial!
Мда, дилема.
Записан
ArchLinux x86_64 / Win10 64 bit
Barmaglodd
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #275 :
Декабрь 24, 2010, 12:05 »
Цитата: kuzulis от Декабрь 24, 2010, 11:52
так нужно смотреть от чего это.
Я уже не найду этот код.
Вспомнил, я уже писал об этом
http://www.prog.org.ru/index.php?topic=9537.msg65014#msg65014
Цитата: kuzulis от Декабрь 24, 2010, 11:52
чем заменить QWinEventNotifier в классе AbstractSerial!
Я заменил на поток, блокирующий IO и поллинг. Но это для моего узкого случая.
«
Последнее редактирование: Декабрь 24, 2010, 12:12 от Barmaglodd
»
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #276 :
Декабрь 24, 2010, 12:21 »
Цитировать
Я заменил на поток, блокирующий IO и поллинг. Но это для моего узкого случая.
Допустим 20 ком портов, тогда придется создавать 20 потоков!?
Записан
ArchLinux x86_64 / Win10 64 bit
Barmaglodd
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #277 :
Декабрь 24, 2010, 12:31 »
У меня сейчас в firefox'е 24 потока.
И я же не говорю, что это универсальное решение.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #278 :
Декабрь 25, 2010, 19:57 »
>>Интересно, никогда не наблюдал такого. Кинь ссылку на топик.
Речь идёт об устройствах типа USB<->RS-485, кода пользователь выдёргивает на горячую такой переходник, то программисту хотелось бы иметь возможность отследить эту ситуацию
Записан
Юра.
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #279 :
Декабрь 26, 2010, 14:33 »
Покопаюсь как будет время с своих исходниках, вроде такой проблемы у нас не было. Мы работали с IrDA-tp-COM, USB-to-COM
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #280 :
Декабрь 26, 2010, 14:50 »
Заглянул в свои исходники: у нас такое событие обрабатывалось извне библиотеки. В общем есть цикл в отдельном потоке, который проверяет кол-во доступных байт для чтения при помощи метода bytesWaiting. Если этот метод возвращает -1 (ошибка) мы закрываем порт и освобождаем ресурсы. Метод bytesWaiting асинхронный, реализованный при помощи WaitCommEvent и WaitForSingleObject
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #281 :
Декабрь 27, 2010, 18:11 »
Цитата: pastor от Декабрь 22, 2010, 19:36
Цитата: kuzulis от Декабрь 22, 2010, 19:24
Потому что если открыть порт и выдернуть его - то из этой ветки устройство не исчезнет! На crossplatform.ru уже обсуждали.
Интересно, никогда не наблюдал такого. Кинь ссылку на топик.
начало
тут
Цитата: pastor от Декабрь 26, 2010, 14:50
Если этот метод возвращает -1 (ошибка) мы закрываем порт и освобождаем ресурсы.
Моё
:
Цитировать
я использую QxtSerialPort в виндовозе, для отлова отключения преобразователя USB-RS232 при открытом порте всегда проверяю кол-во принятых байт. Драйвер FTDI'ного преобразователя всегда
отрицательное значение возвращает
.
Записан
Юра.
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #282 :
Декабрь 27, 2010, 19:29 »
Цитировать
я использую QxtSerialPort в виндовозе, для отлова отключения преобразователя USB-RS232 при открытом порте всегда проверяю кол-во принятых байт. Драйвер FTDI'ного преобразователя всегда отрицательное значение возвращает.
А если, к примеру, байты начнут передаваться только через час, два, три (к примеру, так задумано) - то и о исчезновении устройства ты узнаешь тоже через час, два, три?!
А может и вообще не узнаешь.
«
Последнее редактирование: Декабрь 27, 2010, 19:35 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #283 :
Декабрь 27, 2010, 19:34 »
>>то и о исчезновении устройства ты узнаешь тоже через час, два, три?!
да. Но на практике это и нестрашно.
Записан
Юра.
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #284 :
Январь 08, 2011, 15:11 »
Доброго времени.
Цитировать
Да собственно проблема в следующем. Эта ошибка возникла у нас на рабочем месте разработчика и её можно обойти, раз, другой, изменяя предлагаемые исходники (что очень сильно надоедает). Но что если, она возникнет уже на стороне клиентов, использующих наш софт. Они же в первую очередь обратятся к нам и что мы им скажем? Разведём руками. Пинайте админа!? В лучшем случае, как говорят на востоке - потеряем лицо (не такие уж мы и гордые). А если вопрос возникнет в некий критический момент, да на нас потом всех собак спустят.
Ну так,
для себя
один раз измените исходники, они ж опен-сурц, в чем проблема?
Как вариант - возьмите очень старые исходники библиотеки на fireforge.net , там по моему, "тупо" читался реестр, может быть, этой проблемы не будет, измените их и добавьте себе.
Цитировать
Поэтому ещё раз прошу рассмотреть использование в библиотеке альтернативных вариантов получения списка портов.
Найдите альтернативное решение сами, предъявите их общественности (ну и мне) и, может быть, их можно будет добавить в основную ветку через дефайны.
Я сам не намерен этим заниматься.
Записан
ArchLinux x86_64 / Win10 64 bit
Страниц:
1
...
17
18
[
19
]
20
21
...
88
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...