Selaa lähdekoodia

用传模块优化下发设备同步系统时间数据帧代码逻辑和RTU模块优化告警推送微信拼接字段逻辑

james 1 vuosi sitten
vanhempi
commit
e32ff7d0d4

+ 3 - 2
DataProcessService/ytRTUProcess/porcesscore.cpp

@@ -225,7 +225,7 @@ void PorcessCore::getAnalogReport(int devIdx, int port, QByteArray data, float v
     dbThread->appendAlarm(AlarmRep(QString(rtuList->rtus[devIdx].Device_Code),
                                    QString("insert into sp_rtu2017 (id, port, device_code, time, status, address, ncmd, data1, data2, data3, data4) values (NULL, 'E6', '%1', '%2', '01', '%3', '%4', %5, '%6', '', '%7' )")
                                    .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg(portname),
-                                   QString("%1 %2").arg(alarmName).arg(portname),t.toString("yyyy-MM-dd HH:mm:ss"),"E6",pnumber));
+                                   QString("%1 %2").arg(portname).arg(alarmName),t.toString("yyyy-MM-dd HH:mm:ss"),"E6",pnumber));
    //dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, address, ncmd, data1, data2, data3, data4, status) values (NULL, '%1', 'E6', '%2', '%3', '%4', %5, '%6', '%7', '%8', '01')")
    //                     .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(Dat).arg(port&0x0f,2,10,QChar('0')).arg(QString::number(static_cast<double>(value),10,2)).arg(alarmName).arg("").arg(portname));
 
@@ -337,12 +337,13 @@ void PorcessCore::getIoReport(int devIdx, int port, QByteArray data, int value,
 //    }
     //屏蔽未配置的端口报告信息,2020-10-19,姚强
     if(d4.length()>0){
+        QString pnumber =QString("%1").arg(port&0x0f,2,16,QChar('0'));
         QString portname = QString::fromUtf8(rtuList->rtus[devIdx].Port[port].PortName);
         dbThread->appendAlarm(AlarmRep(QString(rtuList->rtus[devIdx].Device_Code),
                                        QString("insert into sp_rtu2017 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
                                        .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
                                        .arg(d4)
-                                       .arg(portname),QString("%1 %2").arg(portname).arg(d4),t.toString("yyyy-MM-dd HH:mm:ss")));
+                                       .arg(portname),QString("%1 %2").arg(portname).arg(d4),t.toString("yyyy-MM-dd HH:mm:ss"),"E3",pnumber));
 //        dbThread->appendSql(QString("insert into sp_d%1 (id, device_code, port, time, status, address, ncmd, data2, data4) values (NULL, '%1', 'E3', '%2', '%3', '%4', '%5', '%6', '%7')")
 //                            .arg(rtuList->rtus[devIdx].Device_Code).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(value==0?"00":"01").arg(Dat).arg(port,2,10,QChar('0'))
 //                            .arg(d4)

+ 31 - 22
DataProcessService/ytUserInfoProcess/userinfocommthread.cpp

@@ -18,7 +18,7 @@ UserinfoCommThread::UserinfoCommThread(QObject *parent, QTcpSocket *socket) :
     OnLine = false;
     getdata = false;
     chkTime = true;
-    chkTimeDate = QDate::currentDate();
+    chkTimeDate = QDateTime::currentDateTime();
     uptime = QDateTime::currentDateTime().toTime_t();
     SerivalNum = 0;
     so = socket;
@@ -198,11 +198,11 @@ void UserinfoCommThread::check_protocol(QByteArray data)
             CenterId = dest_addr;
             quint16 frame_len = static_cast<quint16>((data.at(24)&0x00ff)|((data.at(25)&0x00ff)<<8));
             quint8 Cmd = (data.at(26)&0xff);
+            QDateTime sendTime = QDateTime(QDate(year,month,day),QTime(hour,minutes,seconds));
             if((frame_len>0)&&(frame_len<=1024)&&(len>=(frame_len+30))){
                 if(sn!=0x0000)
                     SerivalNum = sn;
                 frame_data = data.mid(27,static_cast<int>(frame_len));
-                QDateTime sendTime = QDateTime(QDate(year,month,day),QTime(hour,minutes,seconds));
 //                QDateTime sendTime = curTime;
                 if((year<=curTime.date().year())&&(month>0)&&(month<13)&&(day>0)&&(day<32)&&(hour<24)&&(minutes<60)&&(seconds<60))
                 {
@@ -299,13 +299,16 @@ void UserinfoCommThread::check_protocol(QByteArray data)
                 emit CommData(QString("%1").arg(DeviceId),2,o);
 #endif
             }
-            if((curTime.date().day()!=chkTimeDate.day())
-                    &&(curTime.time().hour()>2)
-                    &&(curTime.time().minute()>2))
+
+//            if((sendTime.date().day()!=chkTimeDate.day())
+//                    &&(curTime.time().hour()>2)
+//                    &&(curTime.time().minute()>2))
+            int sendtimeInt = sendTime.toTime_t();
+            int systimeInt = QDateTime::currentDateTime().toTime_t();
+            if(abs(sendtimeInt-systimeInt)>180)
                 chkTime = true;
             if(chkTime){
-                setBuildingFireUserinfoTime(88888,DeviceId,curTime);
-                chkTimeDate = QDate::currentDate();
+                setBuildingFireUserinfoTime(21,DeviceId,curTime);
                 chkTime = false;
             }
     }
@@ -498,7 +501,13 @@ void UserinfoCommThread::chkBuildingFireUserinfoPosts(quint64 srcAddr, quint64 d
 
 void UserinfoCommThread::setBuildingFireUserinfoTime(quint64 srcAddr, quint64 destAddr, QDateTime dt)
 {
-    QDateTime curTime = QDateTime::currentDateTime();
+    QDateTime t = QDateTime::currentDateTime();
+    int sec = t.time().second();
+    int min = t.time().minute();
+    int hour = t.time().hour();
+    int day = t.date().day();
+    int mon = t.date().month();
+    int year = t.date().year();
     QByteArray cmd = QByteArray(38,0x00);
     quint16 frame_len = 0x0008;
     SerivalNum++;
@@ -508,12 +517,12 @@ void UserinfoCommThread::setBuildingFireUserinfoTime(quint64 srcAddr, quint64 de
     cmd[3] = static_cast<char>((SerivalNum>>8)&0xff);
     cmd[4] = static_cast<char>(0x01);
     cmd[5] = static_cast<char>(0x01);
-    cmd[6] = static_cast<char>(curTime.time().second()&0xff);
-    cmd[7] = static_cast<char>(curTime.time().minute()&0xff);
-    cmd[8] = static_cast<char>(curTime.time().hour()&0xff);
-    cmd[9] = static_cast<char>(curTime.date().day()&0xff);
-    cmd[10] = static_cast<char>(curTime.date().month()&0xff);
-    cmd[11] = static_cast<char>((curTime.date().year()-2000)&0xff);
+    cmd[6] = static_cast<char>(sec&0xff);
+    cmd[7] = static_cast<char>(min&0xff);
+    cmd[8] = static_cast<char>(hour&0xff);
+    cmd[9] = static_cast<char>(day&0xff);
+    cmd[10] = static_cast<char>(mon&0xff);
+    cmd[11] = static_cast<char>((year-2000)&0xff);
     cmd[12] = static_cast<char>(srcAddr&0xff);
     cmd[13] = static_cast<char>((srcAddr>>8)&0xff);
     cmd[14] = static_cast<char>((srcAddr>>16)&0xff);
@@ -531,12 +540,12 @@ void UserinfoCommThread::setBuildingFireUserinfoTime(quint64 srcAddr, quint64 de
     cmd[26] = static_cast<char>(0x01);
     cmd[27] = static_cast<char>(0x5a);
     cmd[28] = static_cast<char>(0x01);
-    cmd[29] = static_cast<char>(dt.time().second()&0xff);
-    cmd[30] = static_cast<char>(dt.time().minute()&0xff);
-    cmd[31] = static_cast<char>(dt.time().hour()&0xff);
-    cmd[32] = static_cast<char>(dt.date().day()&0xff);
-    cmd[33] = static_cast<char>(dt.date().month()&0xff);
-    cmd[34] = static_cast<char>((dt.date().year()-2000)&0xff);
+    cmd[29] = static_cast<char>(sec&0xff);;
+    cmd[30] = static_cast<char>(min&0xff);
+    cmd[31] = static_cast<char>(hour&0xff);
+    cmd[32] = static_cast<char>(day&0xff);
+    cmd[33] = static_cast<char>(mon&0xff);
+    cmd[34] = static_cast<char>((year-2000)&0xff);
     cmd[35] = static_cast<char>(0x00);
     cmd[36] = static_cast<char>(0x23);
     cmd[37] = static_cast<char>(0x23);
@@ -546,10 +555,10 @@ void UserinfoCommThread::setBuildingFireUserinfoTime(quint64 srcAddr, quint64 de
     cmd[35] = static_cast<char>(crc&0xff);
     if(so->write(cmd)==38){
 #ifdef CommDbg
-        QString o = QString("[ %1 %2(%3) >>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz ")).arg(so->peerAddress().toString()).arg(DeviceId);
+        QString o = QString("[zyj1 %1 %2(%3) >>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz ")).arg(so->peerAddress().toString()).arg(DeviceId);
         for(int i=0;i<38;i++)
             o.append(QString(" %1").arg(cmd[i]&0xff,2,16,QChar('0')));
-//        emit getCommData(o);
+        emit getCommData(o);
         emit CommData(QString("%1").arg(DeviceId),2,o);
 #endif
     }

+ 1 - 1
DataProcessService/ytUserInfoProcess/userinfocommthread.h

@@ -79,7 +79,7 @@ private:
     bool working;
     bool getdata;
     bool chkTime;
-    QDate chkTimeDate;
+    QDateTime chkTimeDate;
     uint lastTime;
     quint8 lastSysAddr;
     quint8 lastDataType;