QtSerialPort, Проблема сборки QtSerialPort под Windows |
Здравствуйте, гость ( Вход | Регистрация )
QtSerialPort, Проблема сборки QtSerialPort под Windows |
NAUGREEM |
19.3.2013, 14:43
Сообщение
#51
|
Студент Группа: Участник Сообщений: 28 Регистрация: 16.1.2013 Пользователь №: 3675 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
kuzulis |
19.3.2013, 14:49
Сообщение
#52
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
|
|
|
NAUGREEM |
19.3.2013, 16:01
Сообщение
#53
|
Студент Группа: Участник Сообщений: 28 Регистрация: 16.1.2013 Пользователь №: 3675 Спасибо сказали: 0 раз(а) Репутация: 0 |
что-то я не нашёл - кто этот сигнал посылает? Класс QSerialPort посылает сигнал QSerialPort::error(SerialPortError err) со значением ResourceError если ты выдернул из системы уже открытый USB/Serial порт. но если ты вырубил блютузовый девайс - то никакой ошибки не возникает, пока ты не пошлёшь в порт какой-нибудь байт... а при отправке данных в порт - возникает ошибка 11 (неизвестная ошибка) но у девайса нету команды ping, чтобы пинать его... и в некоторых режимах вообще нельзя в него ничего посылать... засада получается... |
|
|
kuzulis |
19.3.2013, 17:09
Сообщение
#54
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Цитата(NAUGREEM) но если ты вырубил блютузовый девайс - то никакой ошибки не возникает, пока ты не пошлёшь в порт какой-нибудь байт... А ты поставь брекпойнт в CommOverlappedEventNotifier на processCompletionRoutine(), выдерни шнурок и посмотри какое значение будет у triggeredEventMask, и сработает ли он вообще? Цитата(NAUGREEM) а при отправке данных в порт - возникает ошибка 11 (неизвестная ошибка) Ну а ты там где вызывается GetLastError() (в свиче) замени на типа:
И приведи значение кода этой системной ошибки в переменной r. UPD: И да, какая у тебя ОС? Сообщение отредактировал kuzulis - 19.3.2013, 17:10 |
|
|
kuzulis |
19.3.2013, 20:40
Сообщение
#55
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
NAUGREEM
Упс, у себя проверил - оказывается - ДА, профукивался код Цитата ERROR_DEVICE_REMOVED 1617 (0x651) The device has been removed. И что самое интересное, что этот код ошибки появляется только если устройство было открыто и был произведен I/O в у-во. Проверь с этим патчем: https://codereview.qt-project.org/#change,51468 И обязательно отпишись о том: * на какой ОС, сколько бит, * какой Bluetooth адаптер (по крайней мере VID/PID) * какой Bluetooth стек использовал: Стандартный микрософтовский, IVTBlueSoleil, Toschiba и т.п. !!! Сообщение отредактировал kuzulis - 19.3.2013, 21:33 |
|
|
NAUGREEM |
21.3.2013, 16:25
Сообщение
#56
|
Студент Группа: Участник Сообщений: 28 Регистрация: 16.1.2013 Пользователь №: 3675 Спасибо сказали: 0 раз(а) Репутация: 0 |
А ты поставь брекпойнт в CommOverlappedEventNotifier на processCompletionRoutine(), выдерни шнурок и посмотри какое значение будет у triggeredEventMask, и сработает ли он вообще? не срабатывает Ну а ты там где вызывается GetLastError() (в свиче) замени на типа:
И приведи значение кода этой системной ошибки в переменной r. ::GetLastError() возвращает 0 UPD: И да, какая у тебя ОС? WinXP 32 BT адаптер HAMA Vid:0a12 Pid:0001 BT стек стандартный микросовтовский |
|
|
kuzulis |
21.3.2013, 17:13
Сообщение
#57
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Как не срабатывает? Не может быть.. Ты пробовал перед этим писать/читать из у-ва?
Я проверял на двух адаптерах в Win8 - все работает. Хотя, может быть, дело в том, что у тебя WinXP... Можешь дать мне удаленный доступ к своему компу через TeamViewer? Сообщение отредактировал kuzulis - 21.3.2013, 17:17 |
|
|
NAUGREEM |
21.3.2013, 17:48
Сообщение
#58
|
Студент Группа: Участник Сообщений: 28 Регистрация: 16.1.2013 Пользователь №: 3675 Спасибо сказали: 0 раз(а) Репутация: 0 |
Как не срабатывает? Не может быть.. Ты пробовал перед этим писать/читать из у-ва? Я проверял на двух адаптерах в Win8 - все работает. Хотя, может быть, дело в том, что у тебя WinXP... Можешь дать мне удаленный доступ к своему компу через TeamViewer? могу Ammyadmin, но только завтра... примерно такой лог у меня получается: last serial error выводится по сигналу error (десятичное значение) triggeredEventMask выводится в processCompletionRoutine() после GetOverlappedResult() (это в классе ComOverlappedEventNotifier) Раскрывающийся текст last serial error 997 last serial error 997 dump... To block-0: FF FF FF triggeredEventMask = 1 dump... From block-0: FF triggeredEventMask = 1 dump... From block-0: FF FF last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 last serial error 997 dump... To block-0: FF FF FF last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 last serial error 0 error = 11 Сообщение отредактировал NAUGREEM - 21.3.2013, 18:09 |
|
|
kuzulis |
21.3.2013, 22:44
Сообщение
#59
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Что-то ты мне не так все рассказываешь.
Цитата last serial error выводится по сигналу error (десятичное значение) Выведи результат от GetLastError не по сигналу, а внутри decodeSystemError(). Странно все это, т.к. я даже проверил на WinXP на примере Terminal - у меня все работает: * если просто открываю порт и выдергиваю блютуз - то срабатывает triggeredEventMask = 0 * если открываю порт, пробую в него что-то принять извне, а потом выдергиваю блютуз - то срабатывает triggeredEventMask = 1, далее, пытается прочитать что-то в startAsyncRead(), читает с ошибкой ERROR_DEVICE_REMOVED == 1617 (0x651) Цитата могу Ammyadmin, но только завтра... Я не знаю что это - но лучше скачай TeamViewer. |
|
|
NAUGREEM |
22.3.2013, 9:13
Сообщение
#60
|
Студент Группа: Участник Сообщений: 28 Регистрация: 16.1.2013 Пользователь №: 3675 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
Текстовая версия | Сейчас: 28.11.2024, 22:27 |