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

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

Страниц: 1 ... 43 44 [45] 46 47 ... 88   Вниз
  Печать  
Автор Тема: Создаю библиотеку для работы с последовательными портами. [УШЕЛ ИЗ ПРОЕКТА].  (Прочитано 752962 раз)
Edynchik
Гость
« Ответ #660 : Ноябрь 29, 2011, 16:58 »

Как проявляется зависание? Какая ОС? Стандартный ли COM порт или нет, если нет то какой? Какая версия библиотеки? Приведи минимальную программу, которая воспроизводит проблему.
машина зависает наглухо,помогает только ребут...порт не стандартный,стоит умножитель скорости на 8...ну и приведенный код срабатывает по таймеру каждые 10 мс...к тому же это бывает только тогда,когда данные есть на порте...
« Последнее редактирование: Ноябрь 29, 2011, 19:56 от Edynchik » Записан
b-s-a
Гость
« Ответ #661 : Ноябрь 29, 2011, 20:49 »

Глухое зависание возможно только из-за проблем аппаратуры или драйверов. Обычное приложение повесить современную систему не может - недостаточно привелегий.
Записан
Edynchik
Гость
« Ответ #662 : Ноябрь 29, 2011, 21:47 »

Глухое зависание возможно только из-за проблем аппаратуры или драйверов. Обычное приложение повесить современную систему не может - недостаточно привелегий.
но она же завешивает не сразу,а через различные промежутки времени...притом разные...(установил счетчиком)...
Записан
b-s-a
Гость
« Ответ #663 : Ноябрь 29, 2011, 23:11 »

ошибки в программах бывают разные. Какие-то сразу проявляются, какие-то через некоторое время. А какие-то вообще иногда при определенной фазе луны...
Записан
Edynchik
Гость
« Ответ #664 : Ноябрь 30, 2011, 09:02 »

притом что если отключить источник данных то все норм, т.е. порт открывается,настраивается, читает данные(их нет), закрывает...и не зависает...
« Последнее редактирование: Ноябрь 30, 2011, 09:05 от Edynchik » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #665 : Ноябрь 30, 2011, 10:04 »

Цитата: Edynchik
Скажите,а в чем может быть причина зависания машины при чтении с использованием библиотеки?
версия библиотеки 0.1.0,ввиду qt4.4.1
Хоспади, ну попробуй поновее версию собрать в своей древней Qt 4.4.1. , например QSerialDevice 2.0 (желательно).
И покажи сюда лог ошибок при сборке. Можно попробоватьисправить.

Но не факт, что оно заработает, т.к. в классе QIODevice от версии 4.4 до 4.7 сильно изменилась имплементация методов read/write.
Записан

ArchLinux x86_64 / Win10 64 bit
Edynchik
Гость
« Ответ #666 : Ноябрь 30, 2011, 10:22 »

Код:
In file included from serialport.cpp:6:
../include/serialportinfo.h:9:35: QtCore/qscopedpointer.h: оЕФ ФБЛПЗП ЖБКМБ ЙМЙ ЛБФБМПЗБ
In file included from serialport.cpp:6:
../include/serialportinfo.h:53: error: 'QScopedPointer' is used as a type, but
is not defined as a type.
../include/serialportinfo.h: In member function `SerialPortInfoPrivate*
SerialPortInfo::d_func()':
../include/serialportinfo.h:29: error: `d_ptr' undeclared (first use this
function)
../include/serialportinfo.h:29: error: (Each undeclared identifier is reported
only once for each function it appears in.)
In file included from serialport_p.h:9,
from serialport.cpp:7:
ringbuffer_p.h: In member function `const char*
RingBuffer::readPointerAtPosition(long long int, qint64&) const':
ringbuffer_p.h:44: error: `length' undeclared (first use this function)
вот такие ошибки...
к тому же я использовал вот эту библиотеку(не вашу), такой же результат...полный завис...
может и в вашей библиотеки, и в той которую я тоже использовал можно проставить какой-нибудь таймаут т.к. проблемы одни и те же...
потому что более опытного человека по работе с последовательными портами мне кажется на форуме нет...

length() исправил на size(), а что делать с QScopedPointer?
« Последнее редактирование: Ноябрь 30, 2011, 10:32 от Edynchik » Записан
b-s-a
Гость
« Ответ #667 : Ноябрь 30, 2011, 10:31 »

к тому же я использовал вот эту библиотеку(не вашу), такой же результат...полный завис...
может и в вашей библиотеки, и в той которую я тоже использовал можно проставить какой-нибудь таймаут т.к. проблемы одни и те же...
Я тебе уже указал на список истинных виновников происходящего.
Какие таймауты? Данная библиотека даже и не пытается читать, если данных нет (bytesAvailable() вернула 0).
Записан
Edynchik
Гость
« Ответ #668 : Ноябрь 30, 2011, 10:34 »

Я тебе уже указал на список истинных виновников происходящего.
Какие таймауты? Данная библиотека даже и не пытается читать, если данных нет (bytesAvailable() вернула 0).
просто как то не хочется приговаривать железо Грустный
к тому же,если на порт повесить Commi(com-терминал)...он то не зависает...
« Последнее редактирование: Ноябрь 30, 2011, 10:59 от Edynchik » Записан
b-s-a
Гость
« Ответ #669 : Ноябрь 30, 2011, 13:10 »

к тому же,если на порт повесить Commi(com-терминал)...он то не зависает...
ты не железо приговаривай. а драйвер попробуй обновить. Или, в крайнем случае, свяжись с производителем драйвера и сообщи об ошибке.
А твой Commi может работать например потому, что не использует некоторые функции, которые использует данная библиотека. Или он их использует иначе...
Записан
Ubuntu_linux
Гость
« Ответ #670 : Ноябрь 30, 2011, 13:21 »

А возиожна ли работа на emdeb linux?
Записан
b-s-a
Гость
« Ответ #671 : Ноябрь 30, 2011, 13:49 »

А почему бы и нет? Если там Qt работает, то и эта либа будет. Попробуй.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #672 : Ноябрь 30, 2011, 14:52 »

Добавил в комметарии к классу SerialPort 2.0 его описание.
Посмотрите кто-нить, кому не лень, что туда еще добавить, что исправить и т.п.
А может и грамматические ошибки пофиксить, а то я с инглишем через гуглтранслятор только Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
b-s-a
Гость
« Ответ #673 : Ноябрь 30, 2011, 15:25 »

Я вот только одного не понял. какое отношение QtSerialPort имеет к сетям (QtNetwork)?
Записан
b-s-a
Гость
« Ответ #674 : Ноябрь 30, 2011, 15:38 »

> If you are unsure of the serial port name, for this you can use the class SerialPortInfo to obtain the correct serial port name.
надо вообще переформулировать.
> To check the currently set name, use the method portName()
To retrieve current port name use method portName().

Как-то так.
Записан
Страниц: 1 ... 43 44 [45] 46 47 ... 88   Вверх
  Печать  
 
Перейти в:  


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