crossplatform.ru

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

44 страниц V  « < 35 36 37 38 39 > »   
Ответить в данную темуНачать новую тему
> QSerialDevice - Библиотека для работы с COM-портами
RazrFalcon
  опции профиля:
сообщение 24.2.2013, 20:54
Сообщение #361


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


В qserialportinfo_mac.cpp начиная с:
87: while ((service = ::IOIteratorNext(iter))) {
Все что внутри прошелся дебагом. Все значения всегда были 0 и не менялись (все что я писал в багрепорте).
То есть не конвевртация в Qt типы фейлиться, он и не забирает ничего.

Имена портов есть. Инфо - нету.

IORegistryExplorer не нашел нигде. Вот такое есть:


Макрос работает. По крайней мере ошибок не было.
Разве что примеры не собираются. Либу не находят. Приходится в сам app/Content/Mac (или Framework) переносить.

По поводу перехвата отключения устройства:
connect(port, SIGNAL(error(QSerialPort::SerialPortError)),
            this, SLOT(onError(QSerialPort::SerialPortError)));

сигналы вообще никакие не приходят.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 24.2.2013, 21:42
Сообщение #362


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

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

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




Репутация:   7  


Цитата(RazrFalcon @ 24.2.2013, 21:54) *
IORegistryExplorer не нашел нигде.


Тут должно быть:

Developer->Applications->Utilities->IORegistryExplorer

По крайней мере в 10.6.8. оно есть, но для этого должен XCode стоять.
Хотя вроде где-то слышал, что в новом XCode эппловцы потихоньку стали удалять эти утилиты..

UPD:

Цитата
сигналы вообще никакие не приходят.


Не, не правда, в старой версии должен был приходить UnknownError.
Теперь я исправил поведение и должно быть ResourceError,
см. патч тут:

https://codereview.qt-project.org/#change,48847

Повторю еще раз: Для этого порт должнен был быть открыт, иначе ничего не поймаешь.
Также, когда ловишь ResourceError - то должен закрыть порт, иначе может быть вечный event-loop
и все повиснет.

Сообщение отредактировал kuzulis - 24.2.2013, 22:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 25.2.2013, 2:34
Сообщение #363


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Да. Делаю коннект. Открываю порт. Выдергиваю устройство. Слот не вызывается в принципе.

Про закрытие ясно. Сделаю.


Утилиту завтра поищу.

Сообщение отредактировал RazrFalcon - 25.2.2013, 2:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 25.2.2013, 10:37
Сообщение #364


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

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

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




Репутация:   7  


Цитата(RazrFalcon @ 25.2.2013, 3:34) *
Да. Делаю коннект. Открываю порт. Выдергиваю устройство. Слот не вызывается в принципе.


Блин, да не может быть. Неужели для Мака настолько разное поведение от версии к версии и от типа чипа?

Тогда продебаж, как я поветовал выше, но только пример Terminal.

1. Добавь в qserialport_unix.cpp код:

QSerialPort::SerialPortError QSerialPortPrivate::decodeSystemError() const
{
    ...
    int r = errno;
    switch (r) {
    ...
    }
}


и пересобери.

2. Воткни шнурок
3. Запусти пример Terminal его в дебаге
4. Добавь брекпойнты на:

- int r = errno; (то что ты исправил)
- readFromPort()
- ExceptionNotifier::event() (на ret = QSocketNotifier::event(e); )
- ReadNotifier::event() (на ret = QSocketNotifier::event(e); )

5. Открой твой FTDI порт и потом выдерни его.


Приведи результаты:

- сработает ли ReadNotifier при выдергивании?
- сработает ли ExceptionNotifier при выдергивании?
- какой код вернет errno после readFromPort() в decodeSystemError() ?
(естественно этот код возможен только после срабатывания ReadNotifier).

Сообщение отредактировал kuzulis - 25.2.2013, 10:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 26.2.2013, 22:12
Сообщение #365


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Цитата
- сработает ли ReadNotifier при выдергивании?
сработал, true

Цитата
- readFromPort()
сработал, bytesRead = -1

Цитата
- сработает ли ExceptionNotifier при выдергивании?
сработал
UnknownError.
Цитата
- какой код вернет errno после readFromPort() в decodeSystemError() ?
тоже -1

все происходит дважды, и оба раза одно и тоже



Цитата
Developer->Applications->Utilities->IORegistrExplorer
у меня в Applications только Qt.
XCode и остальное установлено.

Сообщение отредактировал RazrFalcon - 26.2.2013, 22:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 27.2.2013, 10:16
Сообщение #366


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

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

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




Репутация:   7  


Цитата(RazrFalcon @ 26.2.2013, 23:12) *
UnknownError.


Но а какой errno то? Нужен именно код errno!!!

Цитата
у меня в Applications только Qt.
XCode и остальное установлено.


Без этой утилиты невозмоно пофиксить этот баг, т.к. непонятно
в каких ветках макового словаря (или как там его) лежит требуемая инфа.

Ну значит яблоководы удалили эту утилиту из новых XCode.
Попробуй найти где нить эту утилиту, если тебе еще нужно чтобы пофиксили баг. :)

ЗЫ:
У тебя какая версия XCode?

Сообщение отредактировал kuzulis - 27.2.2013, 10:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.2.2013, 16:46
Сообщение #367


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


errno вроде бы 6, сегодня еще раз проверю. У меня только удаленка к этому компу есть.

XCode скорее всего самый новый. Комп не мой...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 27.2.2013, 17:19
Сообщение #368


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

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

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




Репутация:   7  


Цитата(RazrFalcon @ 27.2.2013, 17:46) *
errno вроде бы 6, сегодня еще раз проверю. У меня только удаленка к этому компу есть.


Если код #6 - то это уже пофикшено с сигналом ResourceError, обновись.

Цитата(RazrFalcon @ 27.2.2013, 17:46) *
XCode скорее всего самый новый. Комп не мой...


А вот с этим будет проблема, т.к. нужен IORegistryExplorer.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 27.2.2013, 21:35
Сообщение #369


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Потестил на новой версии:

ReadNotifier - true

readFromPort:
bytesRead = -1
maxSize = 512

decode...:
r = 0

и так дважды с одинаковыми результатами



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuzulis
  опции профиля:
сообщение 27.2.2013, 21:52
Сообщение #370


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

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

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




Репутация:   7  


Цитата(RazrFalcon @ 27.2.2013, 22:35) *
Потестил на новой версии:

ReadNotifier - true

readFromPort:
bytesRead = -1
maxSize = 512

decode...:
r = 0

и так дважды с одинаковыми результатами


Вот блин засада :blink: , п#*дец какой-то с этим маком, ты уверен что errno == 0 ? :blink:

А можешь поставить брек-пойнт непосредственно внутри readFromPort() на
bytesRead = ::read(descriptor, data, maxSize); // << тут брекпойнт поставь
qDebug() << "errno: " << errno; // << это добавь в код

?

UPD: За скрин спасибо, буду смотреть.
---
Посмотрел на скрин и вижу, что немного не то ты показал.

Надо так: выбери в верхнем-левом углу (в комбобоксе) утилиты вместо IOUSB -> IOService,
также и в нижнем комбобоксе тоже начиналось с IOService.

И приведи все результаты по всем веткам , например, нужны такие ветки
как у меня от "USB-Serial Controller@9f300000" и вниз до "IOSerialBSDClient"

http://www.imageup.ru/img201/1229412/pl2303.jpg.html

Сообщение отредактировал kuzulis - 27.2.2013, 22:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

44 страниц V  « < 35 36 37 38 39 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 12.11.2024, 22:59