QSerialPort прием посылки

 
0
 
C++
ava
7BON | 24.10.2016, 16:32
Всем привет! У меня прием и передача данных осуществляется с помощью QSerialDevice. Передаю данные каждые 10мс. Проблема такого плана я передаю 1 посылку - на приеме ничего не оказалось, когда пошла на передачу вторая посылка - на приеме оказалось посылка из предыдущей и новой посылке вот пример:
Proverka::writeDataTime  "a50155de0000002f"
Proverka::writeDataTime  "a50155e000000011"
Read message "a5035955de01a4d1a5035955e0019ad1"

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

#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 убрал так посылка на приеме вообще пропадала
Kommentare (1)
ava
7BON | 17.11.2016, 09:14 #
Все вопрос решен давно уже, забыл написать :-D 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  7BON
advanced
Absenden