Changeset 10776 in ntrip


Ignore:
Timestamp:
Nov 5, 2025, 1:33:06 PM (12 days ago)
Author:
stuerze
Message:

CHANGE: back to the class QextSerialPort because the QT5 internal class QSerialPort seems to have a bug

Location:
trunk/BNC/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncgetthread.cpp

    r10772 r10776  
    5252#include <QTableWidget>
    5353#include <QTime>
    54 #include <QtSerialPort/QSerialPort>
    5554
    5655#include "bncgetthread.h"
     
    7271#include "RTCM/RTCM2Decoder.h"
    7372#include "RTCM3/RTCM3Decoder.h"
     73#include "serial/qextserialport.h"
    7474
    7575using namespace std;
     
    178178  if (!_staID.isEmpty()
    179179      && settings.value("serialMountPoint").toString() == _staID) {
    180     _serialPort = new QSerialPort(portString);
     180    _serialPort = new QextSerialPort(portString);
     181    _serialPort->setTimeout(0, 100);
    181182
    182183    // Baud Rate
    183184    // ---------
    184185    QString hlp = settings.value("serialBaudRate").toString();
    185     if (hlp == "1200") {
    186       _serialPort->setBaudRate(QSerialPort::Baud1200);
     186    if (hlp == "110") {
     187      _serialPort->setBaudRate(BAUD110);
     188    } else if (hlp == "300") {
     189      _serialPort->setBaudRate(BAUD300);
     190    } else if (hlp == "600") {
     191      _serialPort->setBaudRate(BAUD600);
     192    } else if (hlp == "1200") {
     193      _serialPort->setBaudRate(BAUD1200);
    187194    } else if (hlp == "2400") {
    188       _serialPort->setBaudRate(QSerialPort::Baud2400);
     195      _serialPort->setBaudRate(BAUD2400);
    189196    } else if (hlp == "4800") {
    190       _serialPort->setBaudRate(QSerialPort::Baud4800);
     197      _serialPort->setBaudRate(BAUD4800);
    191198    } else if (hlp == "9600") {
    192       _serialPort->setBaudRate(QSerialPort::Baud9600);
     199      _serialPort->setBaudRate(BAUD9600);
    193200    } else if (hlp == "19200") {
    194       _serialPort->setBaudRate(QSerialPort::Baud19200);
     201      _serialPort->setBaudRate(BAUD19200);
    195202    } else if (hlp == "38400") {
    196       _serialPort->setBaudRate(QSerialPort::Baud38400);
     203      _serialPort->setBaudRate(BAUD38400);
    197204    } else if (hlp == "57600") {
    198       _serialPort->setBaudRate(QSerialPort::Baud57600);
     205      _serialPort->setBaudRate(BAUD57600);
    199206    } else if (hlp == "115200") {
    200       _serialPort->setBaudRate(QSerialPort::Baud115200);
     207      _serialPort->setBaudRate(BAUD115200);
    201208    }
    202209
     
    205212    hlp = settings.value("serialParity").toString();
    206213    if (hlp == "NONE") {
    207       _serialPort->setParity(QSerialPort::NoParity);
     214      _serialPort->setParity(PAR_NONE);
    208215    } else if (hlp == "ODD") {
    209       _serialPort->setParity(QSerialPort::OddParity);
     216      _serialPort->setParity(PAR_ODD);
    210217    } else if (hlp == "EVEN") {
    211       _serialPort->setParity(QSerialPort::EvenParity);
     218      _serialPort->setParity(PAR_EVEN);
    212219    } else if (hlp == "SPACE") {
    213       _serialPort->setParity(QSerialPort::SpaceParity);
    214     } else if (hlp == "MARK") {
    215       _serialPort->setParity( QSerialPort::MarkParity);
     220      _serialPort->setParity(PAR_SPACE);
    216221    }
    217222
     
    220225    hlp = settings.value("serialDataBits").toString();
    221226    if        (hlp == "5") {
    222       _serialPort->setDataBits(QSerialPort::Data5);
     227      _serialPort->setDataBits(DATA_5);
    223228    } else if (hlp == "6") {
    224       _serialPort->setDataBits(QSerialPort::Data6);
     229      _serialPort->setDataBits(DATA_6);
    225230    } else if (hlp == "7") {
    226       _serialPort->setDataBits(QSerialPort::Data7);
     231      _serialPort->setDataBits(DATA_7);
    227232    } else if (hlp == "8") {
    228       _serialPort->setDataBits(QSerialPort::Data8);
     233      _serialPort->setDataBits(DATA_8);
    229234    }
    230235    // Stop Bits
     
    232237    hlp = settings.value("serialStopBits").toString();
    233238    if        (hlp == "1") {
    234       _serialPort->setStopBits(QSerialPort::OneStop);
    235     } else if (hlp == "1.5") {
    236       _serialPort->setStopBits(QSerialPort::OneAndHalfStop);
     239      _serialPort->setStopBits(STOP_1);
    237240    } else if (hlp == "2") {
    238       _serialPort->setStopBits(QSerialPort::TwoStop);
     241      _serialPort->setStopBits(STOP_2);
    239242    }
    240243
     
    243246    hlp = settings.value("serialFlowControl").toString();
    244247    if        (hlp == "XONXOFF") {
    245       _serialPort->setFlowControl(QSerialPort::SoftwareControl);
     248      _serialPort->setFlowControl(FLOW_XONXOFF);
    246249    } else if (hlp == "HARDWARE") {
    247       _serialPort->setFlowControl(QSerialPort::HardwareControl);
     250      _serialPort->setFlowControl(FLOW_HARDWARE);
    248251    } else {
    249       _serialPort->setFlowControl(QSerialPort::NoFlowControl);
     252      _serialPort->setFlowControl(FLOW_OFF);
    250253    }
    251254
    252255    // Open Serial Port
    253256    // ----------------
    254     //_serialPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
    255     _serialPort->open(QIODevice::ReadWrite);
     257    _serialPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered);
    256258    msleep(100); //sleep 0.1 sec
    257259    if (!_serialPort->isOpen()) {
  • trunk/BNC/src/bncgetthread.h

    r10766 r10776  
    4040
    4141class GPSDecoder;
    42 class QSerialPort;
     42class QextSerialPort;
    4343class latencyChecker;
    4444
     
    124124   int                        _ssrEpoch;
    125125   bncRawFile*                _rawFile;
    126    QSerialPort*               _serialPort;
     126   QextSerialPort*            _serialPort;
    127127   bool                       _isToBeDeleted;
    128128   bool                       _rtcmObs;
  • trunk/BNC/src/bncnetquerys.cpp

    r10766 r10776  
    9292  }
    9393
    94   _serialPort = new QSerialPort(_portString);
    95 
     94  _serialPort = new QextSerialPort(_portString); cout << "_portString: " << _portString.toStdString().c_str() << endl;
    9695
    9796  // Baud Rate
     
    10099  hlpL = hlp.split(" ");
    101100  hlp = hlpL[hlpL.size()-1];
    102   if (hlp == "1200") {
    103     _serialPort->setBaudRate(QSerialPort::Baud1200);
     101  if      (hlp == "110") {
     102    _serialPort->setBaudRate(BAUD110);
     103  }
     104  else if (hlp == "300") {
     105    _serialPort->setBaudRate(BAUD300);
     106  }
     107  else if (hlp == "600") {
     108    _serialPort->setBaudRate(BAUD600);
     109  }
     110  else if (hlp == "1200") {
     111    _serialPort->setBaudRate(BAUD1200);
    104112  }
    105113  else if (hlp == "2400") {
    106     _serialPort->setBaudRate(QSerialPort::Baud2400);
     114    _serialPort->setBaudRate(BAUD2400);
    107115  }
    108116  else if (hlp == "4800") {
    109     _serialPort->setBaudRate(QSerialPort::Baud4800);
     117    _serialPort->setBaudRate(BAUD4800);
    110118  }
    111119  else if (hlp == "9600") {
    112     _serialPort->setBaudRate(QSerialPort::Baud9600);
     120    _serialPort->setBaudRate(BAUD9600);
    113121  }
    114122  else if (hlp == "19200") {
    115     _serialPort->setBaudRate(QSerialPort::Baud19200);
     123    _serialPort->setBaudRate(BAUD19200);
    116124  }
    117125  else if (hlp == "38400") {
    118     _serialPort->setBaudRate(QSerialPort::Baud38400);
     126    _serialPort->setBaudRate(BAUD38400);
    119127  }
    120128  else if (hlp == "57600") {
    121     _serialPort->setBaudRate(QSerialPort::Baud57600);
     129    _serialPort->setBaudRate(BAUD57600);
    122130  }
    123131  else if (hlp == "115200") {
    124     _serialPort->setBaudRate(QSerialPort::Baud115200);
     132    _serialPort->setBaudRate(BAUD115200);
    125133  }
    126134
     
    129137  hlp = hlpL[hlpL.size()-4].toUpper();
    130138  if      (hlp == "NONE") {
    131     _serialPort->setParity(QSerialPort::NoParity);
     139    _serialPort->setParity(PAR_NONE);
    132140  }
    133141  else if (hlp == "ODD") {
    134     _serialPort->setParity(QSerialPort::OddParity);
     142    _serialPort->setParity(PAR_ODD);
    135143  }
    136144  else if (hlp == "EVEN") {
    137     _serialPort->setParity(QSerialPort::EvenParity);
     145    _serialPort->setParity(PAR_EVEN);
    138146  }
    139147  else if (hlp == "SPACE") {
    140     _serialPort->setParity(QSerialPort::SpaceParity);
    141   }
    142   else if (hlp == "MARK") {
    143     _serialPort->setParity(QSerialPort::MarkParity);
    144   }
    145 
     148    _serialPort->setParity(PAR_SPACE);
     149  }
    146150
    147151  // Data Bits
     
    149153  hlp = hlpL[hlpL.size()-5];
    150154  if      (hlp == "5") {
    151     _serialPort->setDataBits(QSerialPort::Data5);
     155    _serialPort->setDataBits(DATA_5);
    152156  }
    153157  else if (hlp == "6") {
    154     _serialPort->setDataBits(QSerialPort::Data6);
     158    _serialPort->setDataBits(DATA_6);
    155159  }
    156160  else if (hlp == "7") {
    157     _serialPort->setDataBits(QSerialPort::Data6);
     161    _serialPort->setDataBits(DATA_7);
    158162  }
    159163  else if (hlp == "8") {
    160     _serialPort->setDataBits(QSerialPort::Data7);
     164    _serialPort->setDataBits(DATA_8);
    161165  }
    162166
     
    165169  hlp = hlpL[hlpL.size()-3];
    166170  if      (hlp == "1") {
    167     _serialPort->setStopBits(QSerialPort::OneStop);
    168   }
    169   else if (hlp == "1.5") {
    170     _serialPort->setStopBits(QSerialPort::OneAndHalfStop);
     171    _serialPort->setStopBits(STOP_1);
    171172  }
    172173  else if (hlp == "2") {
    173     _serialPort->setStopBits(QSerialPort::TwoStop);
     174    _serialPort->setStopBits(STOP_2);
    174175  }
    175176
     
    178179  hlp = hlpL[hlpL.size()-2].toUpper();
    179180  if (hlp == "XONXOFF") {
    180     _serialPort->setFlowControl(QSerialPort::SoftwareControl);
     181    _serialPort->setFlowControl(FLOW_XONXOFF);
    181182  }
    182183  else if (hlp == "HARDWARE") {
    183     _serialPort->setFlowControl(QSerialPort::HardwareControl);
     184    _serialPort->setFlowControl(FLOW_HARDWARE);
    184185  }
    185186  else {
    186     _serialPort->setFlowControl(QSerialPort::NoFlowControl);
    187   }
    188 
    189   _status = running;
    190 
    191   //_serialPort->open(QIODevice::ReadWrite|QIODevice::Unbuffered);
    192   _serialPort->open(QIODevice::ReadWrite);
     187    _serialPort->setFlowControl(FLOW_OFF);
     188  }
     189
     190  _serialPort->open(QIODevice::ReadWrite|QIODevice::Unbuffered);
    193191
    194192  if (!_serialPort->isOpen()) {
    195193    emit newMessage(_url.path().toLatin1().replace(0,1,"") + ": Cannot open serial port " + _portString.toLatin1()
    196                     + ": " +_serialPort->errorString().toLatin1(), true);
     194                    + ": " + _serialPort->errorString().toLatin1(), true);
    197195    delete _serialPort;
    198196    _serialPort = 0;
     
    200198    return;
    201199  }
     200  else {
     201    emit(newMessage(_url.path().toLatin1().replace(0,1,"") + ": Serial port " + _portString.toLatin1()
     202                    + " is connected: " , true));
     203    _status = running;
     204  }
    202205}
    203206
  • trunk/BNC/src/bncserialport.cpp

    r10766 r10776  
    7474  _serialCountryLineEdit = new QLineEdit();
    7575
    76   _serialBaudRateComboBox->addItems(QString("1200,2400,4800,9600,19200,38400,57600,115200").split(","));
     76  _serialBaudRateComboBox->addItems(QString("110,300,600,"
     77            "1200,2400,4800,9600,19200,38400,57600,115200").split(","));
    7778  _serialFlowControlComboBox->addItems(QString("OFF,XONXOFF,HARDWARE").split(","));
    7879  _serialDataBitsComboBox->addItems(QString("5,6,7,8").split(","));
    79   _serialParityComboBox->addItems(QString("NONE,ODD,EVEN,SPACE,MARK").split(","));
    80   _serialStopBitsComboBox->addItems(QString("1,1.5,2").split(","));
     80  _serialParityComboBox->addItems(QString("NONE,ODD,EVEN,SPACE").split(","));
     81  _serialStopBitsComboBox->addItems(QString("1,2").split(","));
    8182
    8283  _serialBaudRateComboBox->setCurrentIndex(7);
  • trunk/BNC/src/bncwindow.cpp

    r10773 r10776  
    341341    _serialPortNameLineEdit = new QLineEdit(settings.value("serialPortName").toString());
    342342    _serialBaudRateComboBox = new QComboBox();
    343     _serialBaudRateComboBox->addItems(QString("1200,2400,4800,9600,19200,38400,57600,115200").split(","));
     343    _serialBaudRateComboBox->addItems(QString("110,300,600,"
     344        "1200,2400,4800,9600,19200,38400,57600,115200").split(","));
    344345    int kk = _serialBaudRateComboBox->findText(settings.value("serialBaudRate").toString());
    345346    if (kk != -1) {
     
    359360    }
    360361    _serialParityComboBox = new QComboBox();
    361     _serialParityComboBox->addItems(QString("NONE,ODD,EVEN,SPACE,MARK").split(","));
     362    _serialParityComboBox->addItems(QString("NONE,ODD,EVEN,SPACE").split(","));
    362363    kk = _serialParityComboBox->findText(settings.value("serialParity").toString());
    363364    if (kk != -1) {
     
    365366    }
    366367    _serialStopBitsComboBox = new QComboBox();
    367     _serialStopBitsComboBox->addItems(QString("1,1.5,2").split(","));
     368    _serialStopBitsComboBox->addItems(QString("1,2").split(","));
    368369    kk = _serialStopBitsComboBox->findText(settings.value("serialStopBits").toString());
    369370    if (kk != -1) {
  • trunk/BNC/src/src.pri

    r10766 r10776  
    99QT += widgets
    1010QT += core
    11 QT += serialport
    1211
    1312unix:QMAKE_CFLAGS_RELEASE   -= -O2
     
    7978          combination/bnccomb.h combination/bncbiassnx.h
    8079
     80HEADERS       += serial/qextserialbase.h serial/qextserialport.h
     81unix:HEADERS  += serial/posix_qextserialport.h
     82win32:HEADERS += serial/win_qextserialport.h
    8183
    8284SOURCES = bncgetthread.cpp  bncwindow.cpp bnctabledlg.cpp             \
     
    119121          combination/bnccomb.cpp combination/bncbiassnx.cpp
    120122
     123SOURCES       += serial/qextserialbase.cpp serial/qextserialport.cpp
     124unix:SOURCES  += serial/posix_qextserialport.cpp
     125win32:SOURCES += serial/win_qextserialport.cpp
     126
    121127RC_FILE = bnc.rc
    122128
Note: See TracChangeset for help on using the changeset viewer.