Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QSerialPort прием посылки 
:(
    Опции темы
7BON
Дата 24.10.2016, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.11.2015

Репутация: нет
Всего: нет



Всем привет! У меня прием и передача данных осуществляется с помощью QSerialPort. Передаю данные каждые 10мс. Проблема такого плана я передаю 1 посылку - на приеме ничего не оказалось, когда пошла на передачу вторая посылка - на приеме оказалось посылка из предыдущей и новой посылке вот пример:
Proverka::writeDataTime  "a50155de0000002f"
Proverka::writeDataTime  "a50155e000000011"
Read message "a5035955de01a4d1a5035955e0019ad1"

как настроить порт так чтобы этого не было(т.е отделить)? 
вот код qserialport
Код

#include "QUART.h"

QUART* QUART::instance(QWidget* _parent ){
    static QUART* __self = 0;
    if ( __self == 0 ) __self = new QUART( _parent );
    return __self;
}

void QUART::setSettings(QUartSettings pSettings ){
    if ( pSettings == portSettings ) return;
    portSettings = pSettings;
}

QUART::QUART(QWidget* _parent){
    serial = new QSerialPort( this );
    //connect( serial, SIGNAL(readyRead()), this, SLOT(readFromPort()));
    connect( serial, SIGNAL(error(QSerialPort::SerialPortError)),
             this,   SLOT(handleError(QSerialPort::SerialPortError)));
}

QUART::~QUART(){
    emit finished();
    delete serial;
}

void QUART::disconnectPort(){
    if ( serial->isOpen() ) serial->close();
}

void QUART::openPort(){
    serial->setPortName(portSettings.name);
    serial->setBaudRate(portSettings.baudrate);
    serial->setDataBits(portSettings.dataBits);
    serial->setParity(portSettings.parityCtrl);
    serial->setStopBits(portSettings.stopBits);
    serial->setFlowControl(portSettings.flowCtrl);
    if (serial->open(QIODevice::ReadWrite)) {
            emit openSuccessfully( true );
            emit statusMessage( tr("Connected to %1 : %2, %3, %4, %5, %6")
                                       .arg(portSettings.name)
                                       .arg(portSettings.baudrate)
                                       .arg(portSettings.dataBits)
                                       .arg(portSettings.parityCtrl)
                                       .arg(portSettings.stopBits)
                                       .arg(portSettings.flowCtrl));
    } else {
       emit openSuccessfully( false );
    }
}

void QUART::writeToPort( QByteArray dataArray ){
    if ( serial->isOpen()){
       serial->write(dataArray);
      }
    else emit statusMessage("Write UART error. Port closed");
}

void QUART::readFromPort(){
    if ( serial->isOpen() ){
      emit readedData( serial->readAll() );
      }
//  while(serial->bytesAvailable())
//    {
//      emit readedData( serial->readAll() );
//    }
    //qDebug()<<"Port Read "<< serial;
}

void QUART::handleError(QSerialPort::SerialPortError errorStr){
    emit statusMessage(portSettings.name + " error:" + QString().number(errorStr));
}


Сигнал ReadyRead убрал так посылка на приеме вообще пропадала

Это сообщение отредактировал(а) 7BON - 31.10.2016, 08:17
PM MAIL   Вверх
7BON
Дата 17.11.2016, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 20.11.2015

Репутация: нет
Всего: нет



Все вопрос решен давно уже, забыл написать smile

Добавлено @ 09:16
Ребята, кто-нибудь сталкивался с таким, что данные, которые принимаю проскакивают и как решить такой вопрос? smile 

Это сообщение отредактировал(а) 7BON - 17.11.2016, 09:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0961 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.