|
@@ -0,0 +1,104 @@
|
|
|
+#ifndef SMARTLIGHTCOMMTHREAD_H
|
|
|
+#define SMARTLIGHTCOMMTHREAD_H
|
|
|
+
|
|
|
+#include <QThread>
|
|
|
+#include <QHostAddress>
|
|
|
+#include <QTcpSocket>
|
|
|
+#include <QString>
|
|
|
+#include <QDateTime>
|
|
|
+#include <QStringList>
|
|
|
+#include <QList>
|
|
|
+#include <QObject>
|
|
|
+
|
|
|
+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<QByteArray> CmdList;
|
|
|
+};
|
|
|
+
|
|
|
+#endif // SMARTLIGHTCOMMTHREAD_H
|