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

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

Страниц: 1 ... 78 79 [80] 81 82 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 750859 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1185 : Июль 12, 2014, 12:39 »

Цитировать
Так не очень понятно.

А это обычное поведение для всех QIODevice классов: сокетов, процессов и пр.
Просто раньше оно работало не в соответствии с документацией, но теперь в соответствии. Улыбающийся

Цитировать
Получается какая-то коллизия. Так и должно быть? Может как-то доработать библиотеку, чтобы работало и в таком режиме?

Проще тогда было сделать два отдельных теста: sender и receiver.
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1186 : Июль 13, 2014, 13:12 »

Заработала моя программа. Иногда перед нужными данными появляются уже принятые данные. Если перед отправкой данных устройству или после приема данных, вызвать waitForReadyRead(0), то лишних данных нет!
« Последнее редактирование: Июль 13, 2014, 13:44 от Phoenix » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1187 : Июль 13, 2014, 14:35 »

Цитировать
Иногда перед нужными данными появляются уже принятые данные.
Не может такого быть.

Цитировать
Если перед отправкой данных устройству или после приема данных, вызвать waitForReadyRead(0), то лишних данных нет!
Что-то перемудрено тут.. Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1188 : Июль 13, 2014, 14:48 »

Ну хз, я не настаиваю. Если у кого-нибудь возникнет такое, будут знать как проверить. Хотя большинство наверно сигналами пользуются.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1189 : Июль 26, 2014, 09:50 »

@Phoenix,

Кстати да (ты прав). Кажется, есть баг в waitForBytesWritten() когда он используется совместно с waitForReadyRead() (или когда что-то читаем).
Тогда если внутри waitForBytesWritten() срабатывает событие от "WaitCommEvent", то оно некорректно обрабатывается, что приводит к
заполнению readBuffer данными которые уже были когда-то прочитаны (или мусором).

Вот сам баг https://bugreports.qt-project.org/browse/QTBUG-40344 (и там есть ссылка на патч, если есть время - то попробуй плз).
Записан

ArchLinux x86_64 / Win10 64 bit
Phoenix
Гость
« Ответ #1190 : Июль 30, 2014, 08:04 »

Kuzulis, патч работает. Даже пропала коллизия в тесте, про которую я писал выше.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1191 : Июль 30, 2014, 16:43 »

Ага, спасибо за тесты. Баг будет исправлен в 5.3.2.
Записан

ArchLinux x86_64 / Win10 64 bit
titan83
Гость
« Ответ #1192 : Август 07, 2014, 11:14 »

kuzulis, извини, если это будет офф, но все же.
Хочу оформить свои классы в отдельную библиотеку, чтобы не таскать их в каждый проект.
Читаю документацию - и везде при использовании библиотек надо указывать пути к хедерам и прочее...((
а вот у тебя в QtSerialPort сделано все правильно - одна строчка CONFIG += serialport и это, на мой взгляд, правильно.
Подскажи - насколько сложно добиться подобного поведения? Я начал смотреть исходники, но слишком много белых пятен для меня пока((
Может у тебя есть исходник какой-нибудь простой библиотеки, чтобы можно было поразбираться и по аналогии сделать для себя?
Заранее спасибо.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1193 : Август 07, 2014, 11:40 »

Цитата: titan83
а вот у тебя в QtSerialPort сделано все правильно - одна строчка CONFIG += serialport и это, на мой взгляд, правильно.
Нет. Эта фича относится только (в основном) к модулям/компонентам, которые установлены в Qt (находятся в директории с Qt-шными бинарями). Т.е. это как-бы неотъемлемая часть Qt.

Если планируется использование только Qt5 - то тут все просто:

1. Необходимо установить питон + перл (обязательно!).
2. Организовать структуру проекта твоих классов/библиотек определенным образом (см. как сделано в QtSerialPort, а также в других модулях, например QtConnectivity и прочих "не-Core" модулей)

В этом случае, после сборки твоей "библиотеки", ее необходимо будет установить в директорю с твоей Qt5.
Можно это делать с помощью "make install", а можно вручную распихатть все куда надо в директорию с Qt5.

И - да, тогда для подключения твоих модулей достаточно будет только написать QT += mycoolmodule

Если планируется использование только Qt4 - то тут сложнее:

1. Нужно написать еще *.prf файл (я особо не разбирался в этом, т.к. это делал другой человек) и неким образом сделать так чтобы
он при установке копировался в нужные места в твоем Qt4 (mkspecs/features).
2. Неким образом сделать так, чтобы твои заголовки при установке копировались в нужные места в твоем Qt4.

В этом случае, после сборки твоей "библиотеки", ее необходимо будет установить в директорю с твоей Qt4.
Можно это делать с помощью "make install", а можно вручную распихатть все куда надо в директорию с Qt4.

И - да, тогда для подключения твоих модулей достаточно будет только написать CONFIG += mycoolmodule


Но, ИМХО, это мутная тема и я бы не заморачивался с этим, а таскал бы свои классы с сбой.
Если так уж не нравится прописывать всякий раз пути к заголовкам, пути к библиотекам и прочеее - то я бы
просто рекомендовал бы перейти на QBS. Там нет такого. Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
titan83
Гость
« Ответ #1194 : Август 07, 2014, 12:03 »

Пожалуй, соглашусь на счет мутности и буду дальше таскать классы с собой, ибо qt пока 4.8
Спасибо за развернутый ответ!
Записан
SniT
Гость
« Ответ #1195 : Сентябрь 11, 2014, 15:13 »

Доброго дня.
Подскажите как скачать исходники QtSerialPort ? На qt.gitorious.org отвечает что файл не найден.
Если у кого есть, выложите плиз сюда.

Заранее благодарен.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1196 : Сентябрь 12, 2014, 17:46 »

https://qt-project.org/wiki/QtSerialPort_Russian
Записан

ArchLinux x86_64 / Win10 64 bit
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1197 : Октябрь 23, 2014, 09:13 »

upd: отбой тревоги Улыбающийся
« Последнее редактирование: Октябрь 23, 2014, 10:10 от Kurles » Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Pavel_
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #1198 : Ноябрь 05, 2014, 14:03 »

Доброго времени суток!
kuzukis, работаю с Вашей библиотекой с лета сего года, начал юзать Qt 5.2.1 win7 32 (скачано с qserialport с оффсайта) - все работоспособно, но очень не нравится то, что в консоли(=вывод приложения) почему-то постоянно ругается при открытии любого порта: "void QSerialPortPrivate::detectDefaultSettings(): Unexpected flow control settings". Нашел тут только одно подобное упоминание http://www.prog.org.ru/index.php?topic=9537.msg145149#msg145149 - почитал, подумал - в результате, как относится к моему случаю и как исправить не понял. Ткните пожалуйста в ссылку в нужном направлении или вкратце поясните. Я бы и не дергался, но пока отлаживался подобные сообщения иногда возникали в отношении других параметров портов, хотя потом пропали. Что было раз - будет еще неоднократно, может проблемы у меня с кодом? Тем более хотелось бы понять где наглючил. Ранее с Qt4.8 пользовал "qextserialport", кажется, и таких проблем не было.
С уважением...
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1199 : Ноябрь 05, 2014, 15:03 »

В последних версиях эт сообщение уже убрано. Достаточно просто обновиться до 5.3.2/5.3.3
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: 1 ... 78 79 [80] 81 82 ... 88   Вверх
  Печать  
 
Перейти в:  


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