#ifndef SMARTLIGHTCOMMTHREAD_H #define SMARTLIGHTCOMMTHREAD_H #include #include #include #include #include #include #include #include class SmartLightCommThread : public QThread { Q_OBJECT public: explicit SmartLightCommThread(qintptr socketDescriptor, QObject *parent = nullptr); ~SmartLightCommThread() override; void run() override; void close_self(QTcpSocket *so); void stop(); void readData(QTcpSocket *so); bool checkDataFrame(QTcpSocket *so, QByteArray dat); bool checkDataBody(QTcpSocket *so, QByteArray body); QByteArray mkDataFrame(QByteArray body); QByteArray resetDataFrame(QByteArray body); quint16 chk_crcc(QByteArray buff, int len); void confirm_report(QTcpSocket *so); void reset_command(QString deviceId); void query_parameters_command(QString deviceId,int parameterType, int pseq); void query_parameters_commandf9(QString deviceId,int parameterType); void query_parameters_command_parameter(QString deviceId,int parameterType,int pn,int number,QString dataList); void request_real_time_data_command(QString deviceId,int parameterType); void request_real_time_data_command2(QString deviceId, int parameterType, int pn, int queryNumber, int startPoint); void request_control_command(QString deviceId, int parameterType, int pn, int controlType, int economizeGear); void request_set_parameters_command(QString deviceId, int parameterType, QString tmp); void request_control_command_time(QString deviceId, int parameterType, QString control_time); void request_control_command_no_parameters(QString deviceId, int parameterType); void request_control_command_appointment(QString deviceId, int parameterType, int pn,int configure, int controlType, int economizeGear,QString control_time); void request_historical_data_command(QString deviceId, int parameterType, int pn, int dataFreezingDensity, int dataPoints,QString start_time); void request_set_parameters_communication_command(QString deviceId, int parameterType, int timeOut,int retransmissionsNumber, int realTimeData, int historicalData, int eventData, int heartbeatCycle); void request_set_parameters_ip_command(QString deviceId, int parameterType, int address1,int address2, int address3, int address4, int port, QString apn); void request_set_parameters_event_detection_command(QString deviceId, int parameterType, int excessiveCurrent,int excessiveCurrentRecovery,int lowCurrent, int lowCurrentRecovery, int capacitorFailure, int capacitorFailureRecovery, int lampFailure, int lampFailureRecovery, int fuseFailure, int fuseFailureRecovery); void request_event_data_command(QString deviceId, int parameterType, int pm, int pn); void check_idx(); float get_repValue(int type, QByteArray dat); QString deviceID(); void mk_EventList_qry(QString deviceId, quint8 type, quint8 cur, quint8 num); void mk_hisData_qry(QString deviceId, quint16 f_pno, quint16 f_fno, QDateTime t1, QDateTime t2, quint8 sep, quint8 num); int get_fp_byte(int num); quint8 hexstr_to_byte(QString dat); QByteArray mkB01datetime(QDateTime dt); QByteArray mkB02float(float d, int g); QByteArray mkB03integer(int d, int g); QByteArray mkB04integer(int d, int s0); QByteArray mkB05float(float d); QByteArray mkB06float(float d); QByteArray mkB07float(float d); QByteArray mkB08integer(int d); QByteArray mkB09float(float d); QByteArray mkB10integer(int d); QByteArray mkB11double(double d); QByteArray mkB12longlong(long long d); QByteArray mkB13float(float d); QByteArray mkB14double(double d); QByteArray mkB15datetime(QDateTime dt); QByteArray mkB16datetime(QDateTime dt); QByteArray mkB17datetime(QDateTime dt); QByteArray mkB18datetime(QDateTime dt); QByteArray mkB19time(QTime t); QByteArray mkB20date(QDate d); QByteArray mkB21date(QDate d); QByteArray mkB22integer(int d); QByteArray mkB23float(float d); QByteArray mkB24datetime(QDateTime dt); QByteArray mkB25float(float d); QByteArray mkB26float(float d); QByteArray mkB27integer(int d); QByteArray mkB28double(double d, int g); signals: void CommData(QString deviceid, int dir, QString data); void getEAlarm(QString DeviceCode, int erc, int sta, int arg1, int arg2, int arg3, float value, float v2, QString others, QDateTime t); void getEAnalogValue(QString DeviceCode, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint); void getERealtimeValue(QString DeviceCode, int point, float rtv, QDateTime t); void getNewDev(QString DeviceCode); public slots: private: qintptr SocketDescriptor; bool keepcomm; bool WaitEcho; quint16 WaitCount; qint16 DevType; int err_count; QString DeviceID; int ErrorCount[2]; int WirelessSignal; int idx; QList CmdList; }; #endif // SMARTLIGHTCOMMTHREAD_H