QSerialDevice - Библиотека для работы с COM-портами |
Здравствуйте, гость ( Вход | Регистрация )
QSerialDevice - Библиотека для работы с COM-портами |
RazrFalcon |
24.2.2013, 20:54
Сообщение
#361
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
В qserialportinfo_mac.cpp начиная с:
Все что внутри прошелся дебагом. Все значения всегда были 0 и не менялись (все что я писал в багрепорте).То есть не конвевртация в Qt типы фейлиться, он и не забирает ничего. Имена портов есть. Инфо - нету. IORegistryExplorer не нашел нигде. Вот такое есть: Макрос работает. По крайней мере ошибок не было. Разве что примеры не собираются. Либу не находят. Приходится в сам app/Content/Mac (или Framework) переносить. По поводу перехвата отключения устройства:
сигналы вообще никакие не приходят. |
|
|
kuzulis |
24.2.2013, 21:42
Сообщение
#362
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
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 |
Да. Делаю коннект. Открываю порт. Выдергиваю устройство. Слот не вызывается в принципе. Блин, да не может быть. Неужели для Мака настолько разное поведение от версии к версии и от типа чипа? Тогда продебаж, как я поветовал выше, но только пример Terminal. 1. Добавь в qserialport_unix.cpp код:
и пересобери. 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 |
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 |
errno вроде бы 6, сегодня еще раз проверю. У меня только удаленка к этому компу есть. Если код #6 - то это уже пофикшено с сигналом ResourceError, обновись. XCode скорее всего самый новый. Комп не мой... А вот с этим будет проблема, т.к. нужен IORegistryExplorer. |
|
|
RazrFalcon |
27.2.2013, 21:35
Сообщение
#369
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
kuzulis |
27.2.2013, 21:52
Сообщение
#370
|
Активный участник Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: 7 |
Потестил на новой версии: ReadNotifier - true readFromPort: bytesRead = -1 maxSize = 512 decode...: r = 0 и так дважды с одинаковыми результатами Вот блин засада , п#*дец какой-то с этим маком, ты уверен что errno == 0 ? А можешь поставить брек-пойнт непосредственно внутри readFromPort() на
? UPD: За скрин спасибо, буду смотреть. --- Посмотрел на скрин и вижу, что немного не то ты показал. Надо так: выбери в верхнем-левом углу (в комбобоксе) утилиты вместо IOUSB -> IOService, также и в нижнем комбобоксе тоже начиналось с IOService. И приведи все результаты по всем веткам , например, нужны такие ветки как у меня от "USB-Serial Controller@9f300000" и вниз до "IOSerialBSDClient" http://www.imageup.ru/img201/1229412/pl2303.jpg.html Сообщение отредактировал kuzulis - 27.2.2013, 22:22 |
|
|
Текстовая версия | Сейчас: 14.11.2024, 19:01 |