Russian Qt Forum
Ноябрь 24, 2024, 23:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Дополнительные компоненты
>
Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].
Страниц:
1
...
44
45
[
46
]
47
48
...
88
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА]. (Прочитано 786803 раз)
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #675 :
Ноябрь 30, 2011, 15:40 »
Да и еще. Попробуй толкнуть эту реализацию на включение в Qt. Только начни с их IRC. Думаю, тебя там направят в нужном направлении.
Кстати, нужно быть готовым некоторое время после включения в Qt осуществлять поддержку данной подсистемы.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #676 :
Ноябрь 30, 2011, 16:06 »
Цитата: b-s-a
Я вот только одного не понял. какое отношение QtSerialPort имеет к сетям (QtNetwork)?
Никакого. Я там поставил вопросики, типо: а что сюда писать?
Цитировать
надо вообще переформулировать.
Как?
Цитировать
To retrieve current port name use method portName().
Исправил.
Цитировать
Да и еще. Попробуй толкнуть эту реализацию на включение в Qt. Только начни с их IRC. Думаю, тебя там направят в нужном направлении.
Я недавно пробовал что-то подобное. Заходил на IRC на freenode и т.п. Но что-то я не понял как там происходит
процесс разговора, я шумел, шкмел, а мне что-то никто ничо не ответил вообще.
Наверное я не туда зашел?
И кстати, раз ты в теме, то не замолвиш словечко там сам сам?
Цитировать
Кстати, нужно быть готовым некоторое время после включения в Qt осуществлять поддержку данной подсистемы.
Ну я рассчитываю на помощь сообщества, т.к. один не потяну. Семья и все такое...
Хотя, никакой помощи от "сообщества" особо не видать.
«
Последнее редактирование: Ноябрь 30, 2011, 16:10 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
Edynchik
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #677 :
Ноябрь 30, 2011, 17:07 »
Все оказалось банально просто, не надо открывать порт 100 раз в секунду...открыл и забил до деструктора....
Записан
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #678 :
Ноябрь 30, 2011, 18:02 »
Цитата: Edynchik от Ноябрь 30, 2011, 17:07
Все оказалось банально просто, не надо открывать порт 100 раз в секунду...открыл и забил до деструктора....
Не удивительно, что возникли глюки.
Мда... Но драйвер все равно кривой.
Записан
Edynchik
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #679 :
Ноябрь 30, 2011, 20:32 »
ну вроде как правило хорошего тона, открыл попользовался,закрыл...но не на частоте 100 Гц как оказалось...
Записан
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #680 :
Ноябрь 30, 2011, 22:15 »
Вообще-то, у каждого правила есть своя область применения. Если твоя программа не подразумевает параллельной работы с устройством других программ, то она должна открывать порт и держать открытым все время, что работает с этим устройством. В частности, программа мониторинга должна держать его открытым все время, что работает.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #681 :
Декабрь 02, 2011, 12:14 »
2 b-s-a,
кстати, я тут посмотрел твою реализацию метода:
qint64 UnixSerialPortEngine::readPerChar(char *data, qint64 maxSize)
и мне что-то стало не понятно: а обрабатываются ли политики при паритетах Even, Odd ?
А то получается, судя по коду, что оно работает только для *nix ОС, не поддерживающих CMSPAR
и только в режимах паритета Mark или Space.
Надо бы подправить, чтобы политики (кроме Ignore) работали при любых паритетах, кроме None,
а то оно как-то наполовину получается.
Записан
ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #682 :
Декабрь 02, 2011, 14:28 »
Цитата: kuzulis от Декабрь 02, 2011, 12:14
и мне что-то стало не понятно: а обрабатываются ли политики при паритетах Even, Odd ?
Не работает только политика StopReading. У меня вообще есть сомнения, что она будет работать...
Все остальные политики реализованы средствами ОС.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #683 :
Декабрь 02, 2011, 14:32 »
Цитировать
Не работает только политика StopReading. У меня вообще есть сомнения, что она будет работать...
Все остальные политики реализованы средствами ОС.
Код
C++ (Qt)
bool
UnixSerialPortEngine
::
setDataErrorPolicy
(
SerialPort
::
DataErrorPolicy
policy
)
{
...
}
тут реализованы?
Записан
ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #684 :
Декабрь 02, 2011, 14:42 »
Ах, елки, так у тебя ж еще не реализована запись кода ошибки
типа PortError::ParityError (или FramingError), при её обнаружении,
чтобы можно было методом error() просмотреть код последней ошибки,
при необходимости.
Блин, как бы это реализовать?
Записан
ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #685 :
Декабрь 02, 2011, 16:48 »
Цитировать
тут реализованы?
Да.
Цитировать
Ах, елки, так у тебя ж еще не реализована запись кода ошибки
типа PortError::ParityError (или FramingError), при её обнаружении,
чтобы можно было методом error() просмотреть код последней ошибки,
при необходимости.
Под *nix невозможно определить что за ошибка произошла. FramingError и ParityError определяются по одним и тем же признакам... Разве что, когда не используется четность можно предположить FramingError.
Записан
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #686 :
Декабрь 02, 2011, 16:50 »
В случае политик отличных от StopReading код ошибки вообще нет смысла выставлять. А саму политику реализовать проблематично. я об это уже писал - QIODevice вытянет все данные из порта и закэширует, пользователь даже не узнает, что была ошибка.
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #687 :
Декабрь 02, 2011, 17:07 »
Цитировать
Под *nix невозможно определить что за ошибка произошла. FramingError и ParityError определяются по одним и тем же признакам... Разве что, когда не используется четность можно предположить FramingError.
Ну тут ладно, значит только ParityError
Цитировать
А саму политику реализовать проблематично. я об это уже писал - QIODevice вытянет все данные из порта и закэширует, пользователь даже не узнает, что была ошибка.
Ну это я знаю. Но ведь подразумеваем, что по error() возвращается код последней ошибки.
Т.е. даже если QIODevice и вытянет данные, то если они приняты с ошибками - то должен
установиться код этой последней ошибки.
Т.е. логика установки кода ошибок должна быть такой, что следующая ошибка перетирает предыдущую.
Но код NoError должен устанавливать только метод unsetError(),
т.е. сбрасывать ошибку должен сам пользователь тогда когда ему необходимо.
Например, сразу перед началом чтения данных или т.п.
Тогда, если пользователь читает из QIODevice данные, он может косвенно определить, а битые ли
они хоть в каком либо месте и уже принять какие нить меры: или отказаться от данных или т.п.
Как насчет такого подхода? т.к. я подразумевал и реализовывал именно его.
«
Последнее редактирование: Декабрь 02, 2011, 17:12 от kuzulis
»
Записан
ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #688 :
Декабрь 03, 2011, 19:05 »
Я попробовал создать минимальный конфигурационный файл для генерации QDoc документации для библиотеки,
что мог - причесал. Но оно все-равно вываливает кучу ошибок:
Цитировать
[kuzulis@kuzulis doc]$ qdoc3 ./qserialdevice.qdocconf
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1068: Cannot find base function for '\reimp' in open()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1111: Cannot find base function for '\reimp' in close()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1347: Cannot find base function for '\reimp' in reset()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1359: Cannot find base function for '\reimp' in atEnd()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1478: Cannot find base function for '\reimp' in isSequential()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1486: Cannot find base function for '\reimp' in bytesAvailable()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1502: Cannot find base function for '\reimp' in bytesToWrite()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1520: Cannot find base function for '\reimp' in canReadLine()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1542: Cannot find base function for '\reimp' in waitForReadyRead()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1589: Cannot find base function for '\reimp' in waitForBytesWritten()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1696: Cannot find base function for '\reimp' in readData()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1732: Cannot find base function for '\reimp' in readLineData()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1739: Cannot find base function for '\reimp' in writeData()
[The function either doesn't exist in any base class with the same signature or it exists but isn't virtual.]
/home/kuzulis/git/ng/qserialdevice/src/serialportengine_p_symbian.cpp:5: Cannot find 'SymbianSerialPortEngine' specified with '\class' in any header file
/home/kuzulis/git/ng/qserialdevice/src/serialportengine_p_win.cpp:5: Cannot find 'WinSerialPortEngine' specified with '\class' in any header file
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:660: Cannot link to 'All Modules' in SerialPort
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:660: Cannot link to 'reentrant' in SerialPort
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:660: Cannot link to 'All Modules' in SerialPort
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:660: Cannot link to 'QIODevice::waitForReadyRead()' in SerialPort
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:30: No documentation for 'SerialPort::dataBits'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:34: No documentation for 'SerialPort::dataErrorPolicy'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:35: No documentation for 'SerialPort::dtr'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:37: No documentation for 'SerialPort::error'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:33: No documentation for 'SerialPort::flowControl'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:31: No documentation for 'SerialPort::parity'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:29: No documentation for 'SerialPort::rate'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:38: No documentation for 'SerialPort::restoreSettingsOnClose'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:36: No documentation for 'SerialPort::rts'
/home/kuzulis/git/ng/qserialdevice/include/serialport.h:32: No documentation for 'SerialPort::stopBits'
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1359: Cannot link to 'readyRead()' in SerialPort::atEnd()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1486: Cannot link to 'read()' in SerialPort::bytesAvailable()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1520: Cannot link to 'readLine()' in SerialPort::canReadLine()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1111: Cannot link to 'QIODevice::close()' in SerialPort::close()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1327: Cannot link to 'write()' in SerialPort::flush()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1068: Cannot link to 'QIODevice::OpenMode' in SerialPort::open()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1429: Cannot link to 'read()' in SerialPort::readBufferSize()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1445: Cannot link to 'read()' in SerialPort::setReadBufferSize()
/home/kuzulis/git/ng/qserialdevice/src/serialport.cpp:1542: Cannot link to 'QIODevice::readyRead()' in SerialPort::waitForReadyRead()
/home/kuzulis/git/ng/qserialdevice/src/serialportinfo.cpp:12: Cannot link to 'All Modules' in SerialPortInfo
/home/kuzulis/git/ng/qserialdevice/src/serialportinfo.cpp:12: Cannot link to 'All Modules' in SerialPortInfo
Генерил из линукса.
Мог бы кто-нибудь прокомментировать каждую из ошибок?
Т.е. что ему не хватает и т.п..
А еще лучше - пофиктить их!
ЗЫ:
собирать документацию примерно пока еще так:
Цитировать
$ cd qserialdevice/doc
$ export SERIALDEVICE_DIR=/home/kuzulis/git/ng/qserialdevice
$ $ qdoc3 ./qserialdevice.qdocconf
где /home/kuzulis/git/ng/qserialdevice - это путь к исходникам библиотеки
С нетерпением жду помощи!
Записан
ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ].
«
Ответ #689 :
Декабрь 04, 2011, 00:54 »
Подозреваю, что "Cannot find base function for '\reimp' in open()" значит, что ты не указал какому классу принадлежит переопределяемый open().
Записан
Страниц:
1
...
44
45
[
46
]
47
48
...
88
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...