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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 24 25 [26] 27 28 ... 38
376  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Сентябрь 07, 2011, 10:42
Вобщем нашел закономерность. У меня в компе есть 2 ком порта. COM1 на материнской плате, "честный" компорт. СОМ7 - преобразователь USB<->RS-232 на чипе prolific. Если мастеру назначаю СОМ1, т.е. "честный", а редэру СОМ7, то все работает без сбоев. Но если мастеру указываю порт СОМ7, а редэру СОМ1 - то ошибки долго не заставляют ждать. Сыпятся.
По хорошему надо бы выкинуть этот prolific и поставить нормальный преобразователь, типа ftdi, но дело в том, что подобный баг наблюдал и с преобразователями на чипах ftdi, и на USB GSM модемах.
Ага... Ок, проверю это дело... (Уменя в тестах мастер был "мамкин" порт, а слейв - "пролифик" PL2303)  Улыбающийся
Не подтверждаю "ошибки". У меня работает как часы.
OS: Win7 x32
Шнурок: PL2303
Драйвер:
- поставщик Prolific
- дата разработки 19.11.2009
- версия 3.3.10.140

Давно уже переписал свое приложение на WinAPI и забыл про эту проблему. Вчера коллеги бились о стену со своим приложением. Иногда обмен сбивается. Они в две головы решали эту проблему, багу в коде искали. Сегодня к обеду проблему решили )). Я поинтересовался - где была ошибка..... А они просто поменяли преобразователь. Ну я не удивился, когда выяснил чем они пользуются для связи с компортом - старая знакомая библиотека для компорта под Qt.  Смеющийся
Причем я грешил на Prolific, но они поставили другой преобразователь, тоже на Prolific-е и всё работает. А глючило и у меня и у них на преобразователе TU-S9. Может преобразователь кривой..... однако с GSM-модемом (Novacom) я такой-же глюк наблюдал, а с этим "глючным" TU-S9 на WinAPI всё работает как часы, без сбоев.

ps давно не слежу за развитием этой библиотеки, т.к. не использую, но может уже эту багу всё таки обнаружил автор и пофиксил.
377  Qt / Пользовательский интерфейс (GUI) / Re: Рисование на QTableView : Май 04, 2011, 05:47
Цитировать
В приложении есть таблица
А что есть таблица?
У меня такая же задача. только у меня куча таблиц. Центральный виджет отнаследовал от QStackedWidget в который помещаю по мере надобности таблицы в виде QTableView + модель. Пока нет данных центральный виджет зарисовываю
Код:
void ProcessTable::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawTiledPixmap(rect(), QPixmap(":icons/logo1.xpm"));
}
378  Qt / Многопоточное программирование, процессы / опять QTimer и потоки : Март 21, 2011, 11:34
допустим есть объект класса

Код:
class MyClas
{
    public:
       MyClas(){timer = 0};
       createTimer()
       {
          if(timer == 0)
               timer = new QTimer;
        }
    private:
        QTimer *timer;
}

один экземпляр этого класса используется в 5-ти потоках. допустим в 3-ем потоке понадобился таймер, из 3-го потока вызвыли createTimer(). Проходит время и таймер понадобился 4-му потоку. Необходимо чтоб таймер немедленно переместился в 4-ый поток. Можно из 3-го потока переправить таймер в 4-ый методом moveToThread(). Но как 3-му сообщить, что нужно передать таймер? Как 4-ый поток может захватить управление над таймером созданным в др потоке?
379  Qt / Установка, сборка, отладка, тестирование / Re: Распараллеливание компиляции : Март 11, 2011, 11:22
Цитировать
Вы глубоко заблуждаетесь!
Действительно, заблуждался. -j без -f не работал. Ну тогда можно просто передать в mingw32-make  два ключа
-j9 -f Makefile.Release
После передачи 2-х ключей и у меня стало быстро компеляца без "добавления поддержки паралельной компиляции MinGW в qmake". Зачем тогда нужно добавлять что-то в qmake, если достаточно в мингв-мэйк передать 2 ключа?
380  Qt / Установка, сборка, отладка, тестирование / Re: Распараллеливание компиляции : Март 11, 2011, 07:22
Цитировать
Кол-во потоков компиляции выбираем равным числу ядер процессора + 1 или +2.

Почему не +1? почему не "=  числу ядер"?
381  Qt / Установка, сборка, отладка, тестирование / Re: Распараллеливание компиляции : Март 11, 2011, 07:00
Windows
Добавляем поддержку паралельной компиляции в qmake:
может в wiki добавить? Распараллеливание компиляции в Qt
382  Qt / Установка, сборка, отладка, тестирование / Re: Распараллеливание компиляции : Март 11, 2011, 06:55
Цитировать
Будет приятно, если эта информация кому нибудь пригодится!

Пригодилась. на ваш способ Qt4.7 работает.

ps способ с "QMAKE_CXXFLAGS_RELEASE += -MP " или передача в мэйк -j не работает с mingw32-make. Проверил.
pps У одного прогера под виндой работает опция -j. У меня не работает. Оказалось что я использую mingw32-make из SDK. А у него нет мингв. Он использует какойто make.exe. С make под виндой всё просто, опцию -j и будет счастье
383  Qt / Qt-инструментарий / Помогите настроить Eclipse : Март 04, 2011, 08:33
В QtCreator-e в настройках сборки можно добавить свои этапы. например перед началом компиляции выполнить MoyEtap.com -qwe -asd=1234 в папке ../../anyDir. Где такое настраивается в Eclipse?
384  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Февраль 20, 2011, 23:03
не поленился, так же подправил твои примеры. запустил -  Шокированный .... как швейцарские часы. ни одного сбоя. стал сверять твой пример со своим. исходники, pro ... Не нашел отличий. Запустил ещё раз твои примеры ... ни прошло и минуты - посыпались баги. Стал экспериментировать .... то сбои постоянно иду, то перезапущу.... упс, нет сбоев.

Вобщем нашел закономерность. У меня в компе есть 2 ком порта. COM1 на материнской плате, "честный" компорт. СОМ7 - преобразователь USB<->RS-232 на чипе prolific. Если мастеру назначаю СОМ1, т.е. "честный", а редэру СОМ7, то все работает без сбоев. Но если мастеру указываю порт СОМ7, а редэру СОМ1 - то ошибки долго не заставляют ждать. Сыпятся.
По хорошему надо бы выкинуть этот prolific и поставить нормальный преобразователь, типа ftdi, но дело в том, что подобный баг наблюдал и с преобразователями на чипах ftdi, и на USB GSM модемах.
385  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Февраль 20, 2011, 08:51
Ну что за чушь...
Да сам удивился - что за чушь. В прикреплении тест показывающий эту "чушь" в  qserialdevice.
386  Qt / Дополнительные компоненты / Re: Создаю библиотеку для работы с последовательными портами. [В ПРОЦЕССЕ]. : Февраль 18, 2011, 13:44
Код:
char command[4];
AbstractSerial *port;
...
port->write(command, 4);
...
write в таком коде глючит. Бывалые подсказывают, что в порт нада писать то 1 байту, иначе масдай. Это ..... особенности компорта? Или это баг в реализации? должна AbstractSerial::write(command, 4) гарантированно  работать?
387  Qt / Многопоточное программирование, процессы / Re: Как узнать кто излучил сигнал? : Февраль 14, 2011, 06:25
Что значит "перекрыть run"?
388  Qt / Многопоточное программирование, процессы / Re: Как узнать кто излучил сигнал? : Февраль 07, 2011, 14:27
Тут понятно, а тут нет....

Ну во первых про то что излучателя может уже не быть не подумал. Но сейчас подумал и в принцепе таких мест нет. излучатель всегда будет жыть. Хотя теоретически в будущем может и не быть. Буду делать защиту.

2maxxant
Во вторых, не понял я вашего примера..... Вот как я сделал
Код:
void MyClass::run() // второй поток
{
   while(...)
   {
      ...
      emit mySignal(this);
   }

}

теперь ваш пример. Требуется в слоте узнать излучателя сигнала. На сколько я понял ваш пример, то с сигналом передается указатель на какой-то объект, созданные во втором потоке, а не указатель на излучателя. может имелось ввиду так ран делать?
Код:
void MyClass::run() // второй поток
{
   // safe_object удалиться автоматически при выходе из run() если на него больше нет других указателей QSharedPointer в любых потоках.
   QSharedPointer <MyClass> safe_object = QSharedPointer<MyClass>(this);

   while(...)
   {
      ...
      // создаём слабую ссылку на объект
      QWeakPointer <MyClass> weak_p = safe_object.toWeakRef();
      emit mySignal(weak_p);
   }

}
389  Qt / Многопоточное программирование, процессы / Re: Как узнать кто излучил сигнал? : Февраль 07, 2011, 06:30
Цитировать
Для межпоточных вещей есть пара из указателей QSharedPointer и QWeakPointer - если конечно хотите обойтись без мютексов и т.п.
Что-то всё как-то сложно..... QPointer...... который не работает....... потом пара из указателей QSharedPointer и QWeakPointer.......

я сделал просто, в лоб
Код:
emit(mySignal(QString, this);
Может такое решение тоже таит подводные камни?

ps
Код:
QObject::setParent: Cannot set parent, new parent is in a different thread
У меня тоже есть такое сообщение. Стал разбираться - действительно, парент создан в ГУИ потоке, а во 2-ом потоке создаю объект и пытаюсь указать родителя, созданного в ГУИ потоке. На работу приложения это не влияет. Приложение работает так, как надо. Поэтому пока на это забил.  Но это сообщение напрягает. По хорошему, надобы разобраться....
390  Qt / Многопоточное программирование, процессы / Re: Как узнать кто излучил сигнал? : Февраль 06, 2011, 21:24
Дело в том, что при директ коннекшине код ГУИ потока будет исполняться в дочернем потоке, что само по себе опасно.
Почитал асистент ещё раз про директКонекшн.
Цитировать
The slot is invoked immediately, when the signal is emitted.
Ни слово про то, что слот будет выполнятся в потоке излучателя сигнала.
Страниц: 1 ... 24 25 [26] 27 28 ... 38

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