crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

14 страниц V  « < 4 5 6 7 8 > »   
Ответить в данную темуНачать новую тему
> QtSerialPort, Проблема сборки QtSerialPort под Windows
NAUGREEM
  опции профиля:
сообщение 19.3.2013, 14:43
Сообщение #51


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 16.1.2013
Пользователь №: 3675

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kuzulis @ 15.3.2013, 17:53) *
UPD: Если тебе нужен вачдог на выдергивание ранее открытого порта - то можешь просто приконнектиться к сигналу ResourceErorr.


что-то я не нашёл - кто этот сигнал посылает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 19.3.2013, 14:49
Сообщение #52


Активный участник
***

Группа: Участник
Сообщений: 393
Регистрация: 29.6.2009
Пользователь №: 862

Спасибо сказали: 36 раз(а)




Репутация:   7  


Цитата(NAUGREEM @ 19.3.2013, 15:43) *
что-то я не нашёл - кто этот сигнал посылает?


Класс QSerialPort посылает сигнал QSerialPort::error(SerialPortError err) со значением ResourceError если
ты выдернул из системы уже открытый USB/Serial порт.


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NAUGREEM
  опции профиля:
сообщение 19.3.2013, 16:01
Сообщение #53


Студент
*

Группа: Участник
Сообщений: 28
Регистрация: 16.1.2013
Пользователь №: 3675

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kuzulis @ 19.3.2013, 15:49) *
Цитата(NAUGREEM @ 19.3.2013, 15:43) *
что-то я не нашёл - кто этот сигнал посылает?


Класс 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() (в свиче) замени на типа:
long r = GetLastError();
switch (r) {
...
}


И приведи значение кода этой системной ошибки в переменной 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  


Цитата(kuzulis @ 19.3.2013, 18:09) *
А ты поставь брекпойнт в CommOverlappedEventNotifier на processCompletionRoutine(),
выдерни шнурок и посмотри какое значение будет у triggeredEventMask, и сработает ли он вообще?

не срабатывает

Цитата(kuzulis @ 19.3.2013, 18:09) *
Ну а ты там где вызывается GetLastError() (в свиче) замени на типа:
long r = GetLastError();
switch (r) {
...
}


И приведи значение кода этой системной ошибки в переменной r.

::GetLastError() возвращает 0

Цитата(kuzulis @ 19.3.2013, 18:09) *
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  


Цитата(kuzulis @ 21.3.2013, 18:13) *
Как не срабатывает? Не может быть.. Ты пробовал перед этим писать/читать из у-ва?


Я проверял на двух адаптерах в 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  


Цитата(kuzulis @ 21.3.2013, 23:44) *
* если просто открываю порт и выдергиваю блютуз - то срабатывает triggeredEventMask = 0


ты выдёргиваешь блютуз-свисток из усб, или отключаешь блютуз-девас от питания?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

14 страниц V  « < 4 5 6 7 8 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 0:53