
рдЕрдкрдиреЗ рд▓реЗрдЦ
"рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд░" рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдореЗрдВ, рдореИрдВ QSerialDevice рдФрд░ Qwt рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкрд╛рдареНрдпрдХреНрд░рдо Qt рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред QSerialDevice рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рд╕реА рднреА COM рдкреЛрд░реНрдЯ (рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпрд╛ рдЖрднрд╛рд╕реА) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдкреАрд╕реА рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ: рд╕реАрдзреЗ UART-> RS-232 (MAX-232) рдПрдбрд╛рдкреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ UART-> USB (FT рдПрдбреЗрдкреНрдЯрд░) -232, CP2101) рдпрд╛ UART-> рдмреНрд▓реВрдЯреВрде (BTM-222), рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ Arduino- рд╕рдВрдЧрдд рдбрд┐рд╡рд╛рдЗрд╕ (UART-> USB рдПрдбреЗрдкреНрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЛрд░реНрдб рдореЗрдВ рдорд┐рд▓рд╛рдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Qwt рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдкреНрд▓реЗ рдЯреВрд▓ рд╣реИред рдЙрдирдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд▓рд╕ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ, рдпрд╣ рдХреНрдпреВрдЯреА рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рддрд╣рдд рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рддреЛ, рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдХрдЯреМрддреА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВ!
рдкрд░рд┐рдЪрдп
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛:
- рдЗрд╕рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдкрд░ рдХреЙрдо-рдкреЛрд░реНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ (AVR рдирд┐рдпрдВрддреНрд░рдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд 4-рдЪреИрдирд▓ ADC рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдбреЗрдЯрд╛)
- рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрд╛рджрди
- рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рд▓рд┐рдЦреЗрдВ
- рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗ рджреВрд╕рд░реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рджрд░реНрдж рд░рд╣рд┐рдд рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА
рдирддреАрдЬрддрди, рдЯрд░реНрдорд┐рдирд▓ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ (рдкреЛрд╕реНрдЯ рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред рдореИрдВ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрддрд╛рдКрдВрдЧрд╛: рдЯрд░реНрдорд┐рдирд▓ рдХреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ QMainWindow рд╡рд░реНрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдПрдХ рдЯреВрд▓рдмрд╛рд░ рд╣реИ, QwtPlot рд╡рд░реНрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рджреЛ рдЧреНрд░рд╛рдлрд╝ рд╡рд┐рдВрдбреЛ, рдФрд░ рдПрдХ рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рдЬреЛ рдХрд┐ рдХреНрдпреВрдЯреЗрдХреНрд╕реНрдЯрдбрд┐рдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрдкрд▓рдмреНрдз рдкреЛрд░реНрдЯ QComboBox рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдУрдкрди рдмрдЯрди рд╡рд░реНрддрдорд╛рди рдкреЛрд░реНрдЯ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рд╡рд┐рдХрд▓реНрдк рдмрдЯрди - рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ: рд╕рдорддрд╛, рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЖрджрд┐ред рдЬрд╛рдирдХрд╛рд░реА - рдЬреБрдбрд╝реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдХреЗ
рд▓рд┐рдП рд╕реНрд░реЛрдд рджреЗрдЦреЗрдВред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ QSerialDevice) рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрд╛ред рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░, рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдХреЗ
рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
QSerialDevice рд╣рдо
рдпрд╣рд╛рдБ рд▓реЗрддреЗ
рд╣реИрдВ ред рдЕрдЧрд▓рд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдореИрдВ рдкрде рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреНрд╕рд╕реНрдЯрд╛рдЗрд▓ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ):
include($${PWD}/../src/qserialdeviceenumerator/qserialdeviceenumerator.pri)
Qwt
рдпрд╣рд╛рдБ рджреЗрдЦреЛред рд╡реИрд╕реЗ, QWT рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╣рд┐рдд рдЗрд╕
рд╣рдм рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрд╕реЗ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ред рд╣рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░:
qmake -set QMAKEFEATURES /path/to/QWT/features
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
CONFIG += qwt
SerialDeviceEnumerator
QSerialDevice рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд SerialDeviceEnumerator рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкреНрд░рддреНрдпреЗрдХ рдЬреБрдбрд╝реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИ; рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рдЧрдгрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдЬрд╣рд╛рдВ procEnumerate (QStringList) рдЙрдкрд▓рдмреНрдз рдХреЙрдо рдкреЛрд░реНрдЯ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдкреЙрдкреНрдпреБрд▓реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рдкреИрдирд▓ рдореЗрдВ рд╕реНрдерд┐рдд QComboBox рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
SerialDeviceEnumerator рд╡рд░реНрдЧ рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ setDeviceName () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмреНрдпрд╛рдЬ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣ рдХрд╛ рдирд╛рдо рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣реИрд╢рдЯреИрдЧ (QStringList) рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕реНрд▓реЙрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ:
//mainwindow.h #include <serialdeviceenumerator.h> ... class MainWindow : public QMainWindow { ... private slots: void procEnumerate(const QStringList &l); void slotPrintAllDevices(const QStringList &list) ... }; //mainwindow.cpp void MainWindow::initEnumerator() { this->enumerator = new SerialDeviceEnumerator(this); connect(this->enumerator, SIGNAL(hasChanged(QStringList)), this, SLOT(procEnumerate(QStringList))); connect(this->enumerator, SIGNAL(hasChanged(QStringList)), this, SLOT(slotPrintAllDevices(QStringList))); this->enumerator->setEnabled(true); } void slotPrintAllDevices(const QStringList &list) { qDebug() << "\n ===> All devices: " << list; // foreach (QString s, list) { this->enumerator->setDeviceName(s);// , qDebug() << "\n <<< info about: " << this->enumerator->name() << " >>>"; qDebug() << "-> description : " << this->enumerator->description(); ... qDebug() << "-> is busy : " << this->enumerator->isBusy(); }
рдЕрдм рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рд╕рднреА рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
AbstractSerial
рдЬрдмрдХрд┐ SerialDeviceEnumerator рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╣рд╛рдпрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдЕрдореВрд░реНрдд Serial Class QSerialDevice рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИред
AbstractSerial рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг initSerial () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реНрдЯреЗрдЯрд╕ рд╕рд┐рдЧреНрдирд▓ рд╕рд┐рдЧреНрдирд▓рд╕реНрдЯреИрдЯрд╕ (QString, QDateTime) рдФрд░ рд░реЗрдбрд░реЗрдб () рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЗрд╕реА рдкреЛрд░реНрдЯ рдкрд░ рдХреЙрдо рдкреЛрд░реНрдЯ рдкрд░ рдЖрддрд╛ рд╣реИред рдЬрдм рдЖрдк рдЯреВрд▓рдмрд╛рд░ рдкрд░ рдУрдкрди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ procControlButtonClick () рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реАрд░рд┐рдпрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреЛрд░реНрдЯрдмреЙрдХреНрд╕ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреЛрд░реНрдЯ рдХрд╛ рдирд╛рдо рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреЛрд░реНрдЯ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдбрд┐рдмрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рдХрдиреЗрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
void MainWindow::procControlButtonClick() { this->serial->setDeviceName(portBox->currentText()); if (!port->open(AbstractSerial::ReadOnly | AbstractSerial::Unbuffered)) { qDebug() << "Serial device by default: " << port->deviceName() << " open fail."; return; }
рдЗрд╕ рдХреНрд╖рдг рд╕реЗ, рд░реЗрдбрд░ () рд╕рд┐рдЧреНрдирд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ procSerialDataReceive () рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдлрдВрдХреНрд╢рди TextEdit рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рд░реАрдб рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
void MainWindow::procSerialDataReceive() { if (this->serial && this->serial->isOpen()) { QByteArray byte = this->serial->readAll(); this->printTrace(byte, true); } } void MainWindow::printTrace(const QByteArray &data) { textEdit->insertPlainText(QString(data)); }
ProcSerialMessages рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди (const QString & msg, QDateTime dt) рд╕рд┐рдЧреНрдирд▓рд╕реНрдЯреИрдЯрд╕ рд╕рд┐рдЧреНрдирд▓ (QString, QDateTime) рдкрд░ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
void MainWindow::procSerialMessages(const QString &msg, QDateTime dt) { QString s = dt.time().toString() + " > " + msg; textEdit->appendPlainText(s); }
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ Qwt рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рддреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ procSerialDataReceive () рд╕реНрд▓реЙрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЖрдЙрдЯрдкреБрдЯред рдпрджрд┐ рджреВрд╕рд░рд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд
рд▓реЗрдЦ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдПрдбреАрд╕реА рдХреЗ рдЪрд╛рд░ рдЪреИрдирд▓реЛрдВ рд╕реЗ рд╕рдВрдХреЗрдд рд▓реЗрдирд╛ рдФрд░ рдЪрд╛рд░ рдШрдЯрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рд╕рдордп рдореЗрдВ рдЙрдирдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ рдПрдХрд▓-рдЪреИрдирд▓ рдПрдбреАрд╕реА, рдХреНрд░рдорд╢рдГ: рдПрдХ рдЧреНрд░рд╛рдл - рдПрдХ рд╡рдХреНрд░ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, Qwt рдкреБрд╕реНрддрдХрд╛рд▓рдп QwtPlot рд╡рд░реНрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ - рдЧреНрд░рд╛рдлрд┐рдХ рдХреИрдирд╡рд╛рд╕ рд╕реНрд╡рдпрдВ, QwtPlotCurve рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рдХреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, QwtArraySeriesData рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рдХреНрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдВрдЪрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, QwtPlotDirectPainter, QwrSystemClock рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, MainWindow рд╡рд░реНрдЧ рдХреЗ procSerialDataReceive () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдПрдХ рдмрд┐рдВрджреБ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╡рдХреНрд░ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ appendPoint (QPointF рдмрд┐рдВрджреБ) рдФрд░ RecToFile (QPointF рдмрд┐рдВрджреБ) рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдПрдордХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ "Ch_number_number = рд╕рдВрдЦреНрдпрд╛ред "рдкрд░реАрдХреНрд╖рдг рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрд╡рд┐рд░реЛрдзрд┐рддред
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЙрд╕ рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдбреЗрдЯрд╛ рдХреЛ рдХреЙрдо рдкреЛрд░реНрдЯ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, procSialialDataReceive () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдбреЗрдЯрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рднреА рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред
Qwt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рдмрд╣реБрдд рд╣реА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЯреВрд▓ рд╣реИ, рдЗрд╕рдореЗрдВ QwtWheel рдЬреИрд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЧреЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрджреНрд░рдг, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдФрд░ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдЬрд╝реВрдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдзреНрдпрд╛рди рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдкреВрд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рд╕реЗ QSerialDevice рдФрд░ Qwt рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ, рдПрдХ рд╕рд░рд▓ (рдЬрдЯрд┐рд▓) рдХреЙрдо-рдкреЛрд░реНрдЯ рдореЙрдиреАрдЯрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдордВрдЪ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП - рддреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕реАрдЦреЛ! рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдХреНрдпреВрдЯреА рдХреА рд╕рд╛рд░реА рд╢рдХреНрддрд┐ рдФрд░ рдорд╣рд╛рдирддрд╛ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛ рджреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЦреБрдж рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрд╕рдХреЗ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдХрд╛ рдкреВрд░рд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛! рд╕реМрднрд╛рдЧреНрдп рд╣реИ