#ifndef ADCQUEUE_H #define ADCQUEUE_H #include #include #include #include #include "stpdefine.h" class ADCQueue : public QObject { Q_OBJECT public: explicit ADCQueue(QObject *parent = nullptr); ~ADCQueue(); bool clear(); void appendCmd(ADCQueue_ns::cmdItem cmd); void appendCmd(stpProtocol_ns::stpCommand cmd, uint16_t regNumber, QByteArray * regData = new QByteArray()); bool start(); bool stop(); ADCQueue_ns::queueState getState() {return _state; }; bool receiveData(QByteArray data); signals: void queueIsEmpty(); void queueTimeout(); void queueError(); void registerReadFinished(ADCQueue_ns::cmdItem cmd); void registerReadError(ADCQueue_ns::cmdItem cmd); void registerWriteFinished(ADCQueue_ns::cmdItem cmd); void registerWriteError(ADCQueue_ns::cmdItem cmd); void sendData(QByteArray data); private: void _startNext(); void _repeatCurrent(); bool _headerCheck(QByteArray * data); QByteArray _packCommand(ADCQueue_ns::cmdItem cmd); QQueue * _cmdItems; ADCQueue_ns::queueState _state; ADCQueue_ns::cmdItem _currentItem; uint16_t _currentCmd; QTimer * _timer; int _repeatCount; }; #endif // ADCQUEUE_H