#ifndef MODBUSHANDLER_H #define MODBUSHANDLER_H #include #include #include #include #include #include #include #include #include #include #include #include #include class QModbusClient; class QModbusReply; class ModBusHandler : public QObject { Q_OBJECT public: explicit ModBusHandler(QObject *parent = nullptr); ~ModBusHandler(); QModbusClient *modbusDevice = nullptr; bool piborIsReqesting = false; bool isConnected = false; // QList PriborList; QMapPriborMap; bool isWaitingResponse=false; QTimer *tmr; //переменные для поиска прибора uint s;uint b; signals: void dataRecivedNotify(DataStruct datastruct); void errorNotify(ErrorCode error); void scanPlease(uint16_t); void priborFounded(uint a, uint s,uint b); //прибор найден void progressUpToStatusBar(uint); void priborNotFounded(); void writeResult(QModbusDevice::Error); public slots: void requestPriborFromList(); // void addToReqList(PrborConnectonAtr pribor); void removeFromReqList(uint adress); void scanPort(QString port); void scanPort(); void writeDataToPribor(DataStruct datastruct); //обработчик в лямде!!!!! void prepareWrite(uint16_t adress, int startAddress, int count, QVector values); void getDataFromPribor(PrborConnectonAtr atr); void readCoils(uint16_t adress, uint16_t startCoil, uint16_t numCoil); void onReadReady(); //обработчик чтения void ScanPortOnReadReady(); //обработчик чтения при сканировании QModbusDataUnit writeRequest(int startAddress, int count) const; void writeConnectionAttr(PrborConnectonAtr oldAtr,PrborConnectonAtr newAtr); private slots: void scanAdressSignalChain(uint16_t adrToScan); private: void dataCollector(quint16 adress, QVectorrecivedData); //сборщик данных для одновременой отправки сенса и данных bool isScanning=0; }; #endif // MODBUSHANDLER_H