Russian Qt Forum
Май 04, 2024, 16:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 ... 13 14 [15] 16 17 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752839 раз)
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #210 : Июль 04, 2010, 11:09 »

А про какие другие библиотеки речь идёт?
и на какой ОСьке происходят все эти казусы?
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #211 : Июль 04, 2010, 17:29 »

Цитировать
может стоит написать автору драйвера?
Эт все хорошо, но по ходу сразу у нескольких девайсов такая ситуация появляется.
Юрий, не можешь проверить со своим шнурком? У тебя же он наверное имеется? Улыбающийся
Я проверял на шнурке с чипом PL2303 у меня под Linux косячит.
Также один итальянец под MacOSX проверял (только не знаю что у него за шнурок) - и у него тоже косяки.

2 Magvaj,

используй из Git-а библиотеку. И если и тут будет нечто такое же - то присылай готовый компилящийся тестовый проект который воспроизводит твои проблемы. Может что не так делаешь!?
Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #212 : Июль 04, 2010, 18:02 »

kuzulis у меня только виндовоз
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #213 : Июль 04, 2010, 18:26 »

Цитировать
Цитата
kuzulis у меня только виндовоз
Жаль.

---

Итак, я обновил Git и теперь чтобы продемонстрировать сей баг - нужно просто собрать пример /examples/sreader , запустить его а потом выдернуть шнурок. И программка начнет вечно читать то чего нету Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #214 : Июль 07, 2010, 18:10 »

Отзыв и предложение: Почему бы в документации не написать как эти классы прикрутить к проекту, в каких *.h эти классы описаны? например что-то типа

"В *.pro файл добавте
INCLUDEPATH     += D:\soft\Qt\serportM\trunk\qserialdevice
QMAKE_LIBDIR    += D:\Soft\Qt\serportM\trunk\build\lib\qintegratedserialdevice\release
LIBS            += -lqserialdevice"

А то приходится по примерам лазить. Мелочь - а не приятно. Ну хотя бы какой *.h файл включать нужно - это уж в первую очередь нужно было в доке прописать.
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 564


Просмотр профиля
« Ответ #215 : Июль 07, 2010, 18:30 »

хотя "См. определение в файле serialdeviceinfo.h  строка 35" - нашел, но где-то в конце описания. В асистанте - название класса, файл описания. В справочнике на с++ перед описанием функции или класса - инклуде
Цитировать
atoi()

#include <stdlib.h>
int atoi(const char *str);
  В справочник на СИ - аналогично. А тут как-то всё наоборот, сначало
Цитировать
Начало работы с классом необходимо начинать с создания экземпляра объекта SerialDeviceInfo.
Пример:
Код:
        ...
        SerialDeviceInfo *sdi = new SerialDeviceInfo(this);
        ...
Пробую по примеру создать - не компилируется. нужен инклуде. лазишь по примерам, находишь. Далее делаешь постепенно все по тексту,,,,, описание заканчивается. в самом конце контакты автора и вдруг "См. определение в файле serialdeviceinfo.h  строка 35" ))
Записан
Magvaj
Гость
« Ответ #216 : Июль 13, 2010, 09:55 »

А про какие другие библиотеки речь идёт?
и на какой ОСьке происходят все эти казусы?


либы: winapi, qextserialport, какойто qserial и прочие.. многие перепробовал.. но они весьма неудобны.
проблемы на разных осях- в винде в основном проблемы с пустыми портами и виртуальными. под линью- самая крупная проблема это ненормальное закрытие порта на версии 0.2

2 Magvaj,

используй из Git-а библиотеку. И если и тут будет нечто такое же - то присылай готовый компилящийся тестовый проект который воспроизводит твои проблемы. Может что не так делаешь!?

использовал из гита- не помогает... в скорем времени выдерну весь код для работы с портами и пришлю. сейчас могу отделаться только логами. сдаём проект,времени нема.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #217 : Июль 13, 2010, 16:51 »

>>какойто qserial
это обёртка над qextserialport
Записан

Юра.
zenden
Гость
« Ответ #218 : Июль 13, 2010, 19:45 »

Так эту библиотеку можно использовать в не Qt приложениях?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #219 : Июль 13, 2010, 20:18 »

её придётся дорабатывать для этого. Но зависимости от Qt останутся
Записан

Юра.
asvil
Гость
« Ответ #220 : Июль 16, 2010, 23:11 »

Большое спасибо за проделанную работу. Не хочу показаться умником, но хотелось бы, чтобы в в папку своего проекта
    - в include/qserialdevice скопировать abstractserial.h, serialdeviceinfo.h, serialdevicewatcher.h
    - в lib - libqserialdevice.a
Проблема 1: зависимость abstractserial от "../qserialdevice_global.h", который тоже придеться копировать. Можно конечно править руками, но не хочеться лишний раз вмешиваться.
Проблема 2: если я не включаю qobject.h раньше serialdevicewatcher.h, наблюдателю за последовательным портом не хватает QObject. Те в serialdevicewatcher.h необходимо включение  <QtCore/QObject>
Возможно макросы экспорта более красиво делать как trolltech (ссылка на источник qthelp://com.trolltech.qt.460/qdoc/sharedlibrary.html)
Код:
#if defined(MYSHAREDLIB_LIBRARY)
 #  define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
 #else
.........
class MYSHAREDLIB_EXPORT MyClass

Записан
юрамеханик
Гость
« Ответ #221 : Июль 17, 2010, 13:49 »

юрамеханик,

вроде бы я исправил код, должно работать, проверьте!
работает , но только один раз, так сказать с "защелкиванием" -
при первой посылки сигнала hasChanged  при вызове setEnabled
в случае, если шнурок был в системе до вызова setEnabled,  то посылается сигнал hasChanged
и я вижу номер порта , но затем при любых манипуляциях с портом (всовываем высовываем) этот сигнал уже не посылается
в случае если шнурка не было в системе до этого момента, то посылается сигнал hasChanged с теми портами что есть (какой то виртуальный у меня имеется порт , хотя как его убрать не знаю) , затем подсоединяем шнурок, сигнал высылается еще раз и я вижу номер нужного порта , и затем опять при любых манипуляциях сигнал уже больше не высылается

что интересно во втором случае при получении номера порта я не могу его открыть
signalStatus возвращает строку Error Openig. Error!
, а SerialDeviceInfo::isBisy()  возвращает false
как мне вытащить номер системной ошибки наподобие GetLastError  в винАпи?
« Последнее редактирование: Июль 17, 2010, 13:52 от юрамеханик » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #222 : Июль 18, 2010, 14:14 »

2 Филоненко Михаил,

Цитировать
Проблема 1: зависимость abstractserial от "../qserialdevice_global.h", который тоже придеться копировать. Можно конечно править руками, но не хочеться лишний раз вмешиваться.
Цитировать
зможно макросы экспорта более красиво делать как trolltech (ссылка на источник qthelp://com.trolltech.qt.460/qdoc/sharedlibrary.html)

Да, это все так. Но я "навертел" макросы таким образом для того чтобы без проблем можно было бы собирать и использовать библиотеку как статически/кую так и динамически/кую. Если делать как по инструкции то ЭТО работает только для динамических библиотек.

Цитировать
Проблема 2: если я не включаю qobject.h раньше serialdevicewatcher.h, наблюдателю за последовательным портом не хватает QObject. Те в serialdevicewatcher.h необходимо включение  <QtCore/QObject>

Ок, если не забуду - добавлю.

2 юрамеханик,
 Ох.. разберайтесь значит сами Улыбающийся . Ваш шнурок - вам и карты в руки. Решите проблему - присылайте патч.
Это все имхо, глюки драйвера и т.п.

Цитировать
как мне вытащить номер системной ошибки наподобие GetLastError  в винАпи?
Ну и используйте GetLastError. По аналогии как в классе SerialDeviceInfo.


« Последнее редактирование: Июль 18, 2010, 14:16 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
юрамеханик
Гость
« Ответ #223 : Июль 18, 2010, 15:35 »

Ну и используйте GetLastError. По аналогии как в классе SerialDeviceInfo.
разобрался ,всего лишь надо было добавить qt_windows.h ,
 при ошибке, которую я описал выше, при вызове данной функции я получаю ноль , то-бишь "все хорошо", что странно
Записан
юрамеханик
Гость
« Ответ #224 : Июль 18, 2010, 15:55 »

2 юрамеханик,
 Ох.. разберайтесь значит сами Улыбающийся . Ваш шнурок - вам и карты в руки. Решите проблему - присылайте патч.
Это все имхо, глюки драйвера и т.п.

ну тут многое в теме можно было списать на глюки драйверов , да вот не списали а решение нашли  Улыбающийся
я конечно понимаю, что низкоквалифицированные тестеры  типа меня порой могут вывести разработчика на тропу еще больших багов, но раз уж взялись то будьте любезны быть терпеливым
Если с меня требуется какая то дополнительная информация по проблеме, проведения дополнительных программных  тестов  и т.д. то я всегда готов , главное укажите  мне путь.
А вот копаться в вашем коде мне пока ни время ни квалификация не позволяют.
я же выкладывал вам необходимые ключи реестра и следил, как они себя ведут при включении выключении , судя по количеству скачиваний вы их  и не смотрели (хотя может это и не нужно было я не знаю)

я  вообще на вашу библиотеку (да и вообще на qt   с VS и с сpp билдера) перешел поскольку у вас была обещана  обещана возможность слежения за портами  в случае если они открыты ну и соответственно трезвой работы "читалки"  в случае пропадания порта в системе

так что пока  видимо придется использовать "смотрелку" из старой версии  библиотеки  +  дополнительные таймеры на задержку прихода пакетов, а "читалку" из новой
Записан
Страниц: 1 ... 13 14 [15] 16 17 ... 88   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.