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

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

Страниц: 1 ... 44 45 [46] 47 48 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752068 раз)
b-s-a
Гость
« Ответ #675 : Ноябрь 30, 2011, 15:40 »

Да и еще. Попробуй толкнуть эту реализацию на включение в Qt. Только начни с их IRC. Думаю, тебя там направят в нужном направлении.
Кстати, нужно быть готовым некоторое время после включения в Qt осуществлять поддержку данной подсистемы.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #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
Гость
« Ответ #677 : Ноябрь 30, 2011, 17:07 »

Все оказалось банально просто, не надо открывать порт 100 раз в секунду...открыл и забил до деструктора....
Записан
b-s-a
Гость
« Ответ #678 : Ноябрь 30, 2011, 18:02 »

Все оказалось банально просто, не надо открывать порт 100 раз в секунду...открыл и забил до деструктора....
Шокированный Не удивительно, что возникли глюки.
Мда... Но драйвер все равно кривой. Подмигивающий
Записан
Edynchik
Гость
« Ответ #679 : Ноябрь 30, 2011, 20:32 »

ну вроде как правило хорошего тона, открыл попользовался,закрыл...но не на частоте 100 Гц как оказалось...
Записан
b-s-a
Гость
« Ответ #680 : Ноябрь 30, 2011, 22:15 »

Вообще-то, у каждого правила есть своя область применения. Если твоя программа не подразумевает параллельной работы с устройством других программ, то она должна открывать порт и держать открытым все время, что работает с этим устройством. В частности, программа мониторинга должна держать его открытым все время, что работает.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #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
Гость
« Ответ #682 : Декабрь 02, 2011, 14:28 »

и мне что-то стало не понятно: а обрабатываются ли политики при паритетах Even, Odd ?
Не работает только политика StopReading. У меня вообще есть сомнения, что она будет работать...
Все остальные политики реализованы средствами ОС.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #683 : Декабрь 02, 2011, 14:32 »

Цитировать
Не работает только политика StopReading. У меня вообще есть сомнения, что она будет работать...
Все остальные политики реализованы средствами ОС.

Код
C++ (Qt)
bool UnixSerialPortEngine::setDataErrorPolicy(SerialPort::DataErrorPolicy policy)
{
...
}
 
тут реализованы?
Записан

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

Сообщений: 2812


Просмотр профиля
« Ответ #684 : Декабрь 02, 2011, 14:42 »

Ах, елки, так у тебя ж еще не реализована запись кода ошибки
типа PortError::ParityError (или FramingError), при её обнаружении,
чтобы можно было методом error() просмотреть код последней ошибки,
при необходимости.

Блин, как бы это реализовать?

Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #685 : Декабрь 02, 2011, 16:48 »

Цитировать
тут реализованы?
Да.
Цитировать
Ах, елки, так у тебя ж еще не реализована запись кода ошибки
типа PortError::ParityError (или FramingError), при её обнаружении,
чтобы можно было методом error() просмотреть код последней ошибки,
при необходимости.
Под *nix невозможно определить что за ошибка произошла. FramingError и ParityError определяются по одним и тем же признакам... Разве что, когда не используется четность можно предположить FramingError.
Записан
b-s-a
Гость
« Ответ #686 : Декабрь 02, 2011, 16:50 »

В случае политик отличных от StopReading код ошибки вообще нет смысла выставлять. А саму политику реализовать проблематично. я об это уже писал - QIODevice вытянет все данные из порта и закэширует, пользователь даже не узнает, что была ошибка.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #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 Offline

Сообщений: 2812


Просмотр профиля
« Ответ #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
Гость
« Ответ #689 : Декабрь 04, 2011, 00:54 »

Подозреваю, что "Cannot find base function for '\reimp' in open()" значит, что ты не указал какому классу принадлежит переопределяемый open().
Записан
Страниц: 1 ... 44 45 [46] 47 48 ... 88   Вверх
  Печать  
 
Перейти в:  


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