Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Траблы с QextSerialPort
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
gormih
Проблема в том, что сия чудная библиотека не хочет давать только строки по ->ReadLine - дает нарезку из обрывков строк.
Инициализация:
NmeaSerial::NmeaSerial(const QString & portName)
{
    this->NMEASerialport = new QextSerialPort(portName,QextSerialPort::EventDriven);

    NMEASerialport->setBaudRate(BAUD38400);
    NMEASerialport->setFlowControl(FLOW_OFF);
    NMEASerialport->setParity(PAR_NONE);
    NMEASerialport->setDataBits(DATA_8);
    NMEASerialport->setStopBits(STOP_2);

    if (NMEASerialport->open(QIODevice::ReadOnly) == true) {
        connect(NMEASerialport, SIGNAL(readyRead()), this, SLOT(onNmeaDataRead()));
        connect(NMEASerialport, SIGNAL(dsrChanged(bool)), this, SLOT(onNmeaDsrChanged(bool)));
        if (!(NMEASerialport->lineStatus() & LS_DSR))
            qDebug() << "warning: device is not turned on";
        qDebug() << "listening for data on" << NMEASerialport->portName();
    }
    else {
        qDebug() << "device failed to open:" << NMEASerialport->errorString();
    }

}


Читаю так:

void NmeaSerial::onNmeaDataRead()
{
        QString tmpdata= QString::fromLatin1(NMEASerialport->readLine(999));
        QStringList tmpdatalist = tmpdata.split("/n");
         qDebug() << "Byte:" <<tmpdatalist;
}


Как победить недуг?
Есть идея использовать getChar, но это как то муторно...
gormih
Временное решение - ограничить чтение строки если размер буфера меньше размера максимальной строки.
Как то так:

    if (NMEASerialport->bytesAvailable()>200)
    {
    QString tmpdata = QString::fromLatin1(NMEASerialport->readLine(200));
        qDebug() << "Found line:" <<tmpdata << " \n Size of buffer:" << NMEASerialport->bytesAvailable();
    }


Как показывает практика вполне работоспобно, но хотелось бы более красивого варианта...
kuzulis
А QSerialDevice 2.0 не пробовал?

И вообще, создается новый проект QtSerialPort.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.