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

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

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Знакомство с последовательным портом  (Прочитано 18383 раз)
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #30 : Май 27, 2014, 22:06 »

У меня такое впечатление, что он нас тролит Улыбающийся Упорно создаёт экземпляры приёмников - передатчиков в куче в слоте обработчика нажатия на кнопку Улыбающийся
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Bepec
Гость
« Ответ #31 : Май 27, 2014, 22:41 »

Я уже с остывшим любопытством наблюдаю - во что может вылиться отсутствие навыков чтения документации. Судя по всему - очень страшные вещи случаются.
Записан
OKTA
Гость
« Ответ #32 : Май 28, 2014, 00:30 »

нет зверя страшнее программиста  Смеющийся
Обсервер, ты начинаешь понимать всю тяжесть фриланса для начинающего программиста?
Записан
8Observer8
Гость
« Ответ #33 : Май 28, 2014, 04:45 »

У меня такое впечатление, что он нас тролит Улыбающийся Упорно создаёт экземпляры приёмников - передатчиков в куче в слоте обработчика нажатия на кнопку Улыбающийся

Передатчик я создаю не в куче, а в стеке по клику мышки. Что плохого, если я открыл, передал (кстати, забыл закрыть порт)?

Код
C++ (Qt)
void Dialog::on_sendPushButton_clicked()
{
   Sender sender( ui->portNameComboBox->currentText( ) );
   QByteArray data;
   data.append( ui->byteSpinBox->value( ) );
   try {
       sender.send( data );
   } catch( const PortError &e ) {
       QMessageBox::critical( this, "Error", QString( e.what( ) ) );
       return;
   } catch( ... ) {
       QMessageBox::critical( this, "Error", "Error: unknown exception" );
       return;
   }
}

Порт в деструкторе теперь закрываю:
Код
C++ (Qt)
   ~Sender( ) {
       m_serialPort.close( );
   }
 

А приёмник создаю в конструкторе диалогового окна:
Код
C++ (Qt)
   m_receiver = new Receiver( ui->portNameComboBox->currentText( ) );
 
   try {
       m_receiver->run( );
   } catch( const PortError &e ) {
       QMessageBox::critical( this, "Error", QString( e.what( ) ) );
   } catch( ... ) {
       QMessageBox::critical( this, "Error", "Error: unknown exception" );
   }
 
   connect( m_receiver, SIGNAL( receiverData( QByteArray ) ), this, SLOT( showData( QByteArray ) ) );
 
« Последнее редактирование: Май 28, 2014, 04:52 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #34 : Май 28, 2014, 05:04 »

Я уже с остывшим любопытством наблюдаю - во что может вылиться отсутствие навыков чтения документации. Судя по всему - очень страшные вещи случаются.
Я только и делаю, что читаю документацию и примеры смотрю. Другое дело, что тому кто работал с портом очевидны с первого взгляда логические ошибки в коде.

Обсервер, ты начинаешь понимать всю тяжесть фриланса для начинающего программиста?
Я уже давно понял, что главное много писать и руки выпрямлять Улыбающийся

Напишите, пожалуйста, в каком конкретном месте есть ошибки (подводные камни работы с COM-портом)? К примеру, то что я обрабатываю исключения в конструкторе диалогового окна - это нормально?
« Последнее редактирование: Май 28, 2014, 05:07 от 8Observer8 » Записан
8Observer8
Гость
« Ответ #35 : Май 28, 2014, 09:03 »

На данный момент ты имеешь "удачу" что твой Sender что-то передает (кстати, благодаря багу, который исправлен в Qt 5.3.1). После обновления на  Qt 5.3.1 у тебя ничо работать не будет (как и в *.nix). Да и что ты все выдумываешь то? Посмотри уже примеры от QtSerialPort... Улыбающийся

Самый главный вопрос: почему мой Sender не будет работать в Qt 5.3.1? Хотя бы намекните Улыбающийся Может ответ в примерах, но я пока не нашёл.
« Последнее редактирование: Май 28, 2014, 09:06 от 8Observer8 » Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #36 : Май 28, 2014, 09:10 »

А вот почему.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


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