class TBaseSerialDevice : public QIODevice{...public:.... virtual bool setBaudRate(TBaudRate baudRate=BaudRate9600) { parameters->m_baudRate=baudRate; return true; } bool setBaudRate(const QString &baudRate) { return setBaudRate(maps->baudRateMap.key(baudRate)); } //перегружаемая функция....private: MyType parameters; //упрощенно QMap<int, QString> baudRateMap; //упрощенно}
class TWinSerialDevice : public TBaseSerialDevice{.... bool setBaudRate(TBaudRate baudRate); {//тут уже другая реализация нежели в TBaseSerialDevice т.е я переопределяю эту виртуальную ф-ю }....}
/*\en Test application to default parameters\ru Тестовое приложение для параметров по умолчанию*/#include <QtCore>#include <winserialdevice.h>class TWinSerialDevice;int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); TWinSerialDevice *MyDevice; MyDevice = new TWinSerialDevice(); qDebug() << "= Defaults parameters =" ; qDebug() << "Device name : " << MyDevice->deviceName() ; qDebug() << "Baud rate : " << MyDevice->baudRate() ; qDebug() << "Data bits : " << MyDevice->dataBits() ; qDebug() << "Parity : " << MyDevice->parity() ; qDebug() << "Stop bits : " << MyDevice->stopBits() ; qDebug() << "Flow : " << MyDevice->flowControl() ; qDebug() << "Char timeout, msec : " << MyDevice->charIntervalTimeout() ; // MyDevice->setDeviceName("COM1") ; MyDevice->open(QIODevice::ReadOnly | QIODevice::Unbuffered); QString br="115200 baud"; MyDevice->setBaudRate(br) ; // <==== тут строка 32 MyDevice->setDataBits("7 bit") ; MyDevice->setParity("Even") ; MyDevice->setStopBits("2") ; MyDevice->setFlowControl("Hardware") ; MyDevice->setCharIntervalTimeout(100) ; // qDebug() << "= New parameters =" ; qDebug() << "Device name : " << MyDevice->deviceName() ; qDebug() << "Baud rate : " << MyDevice->baudRate() ; qDebug() << "Data bits : " << MyDevice->dataBits() ; qDebug() << "Parity : " << MyDevice->parity() ; qDebug() << "Stop bits : " << MyDevice->stopBits() ; qDebug() << "Flow : " << MyDevice->flowControl() ; qDebug() << "Char timeout, msec : " << MyDevice->charIntervalTimeout() ; MyDevice->close(); return app.exec();}
C++ (Qt)MyDevice->TBaseSerialDevice::setBaudRate(br);