yaoqiang 4 سال پیش
والد
کامیت
8f69bc5baa
4فایلهای تغییر یافته به همراه37 افزوده شده و 86 حذف شده
  1. 2 1
      CamCore/CamCore.pro
  2. 25 78
      CamCore/coreobject.cpp
  3. 5 2
      CamCore/coreobject.h
  4. 5 5
      YtCam.pro.user

+ 2 - 1
CamCore/CamCore.pro

@@ -25,7 +25,8 @@ HEADERS += \
     coreobject.h \
     ttsthreads.h \
     wechartthreads.h \
-    logthread.h
+    logthread.h \
+    ../include/YT_EHOME_shm.h
 
 
 INCLUDEPATH += ../hc/incCn

+ 25 - 78
CamCore/coreobject.cpp

@@ -53,7 +53,7 @@ CoreObject::CoreObject(QObject *parent) :
             ytShm->eHomeDevice[i].onLined = 0x00;
             ytShm->eHomeDevice[i].savetmp = 0x00;
             ytShm->eHomeDevice[i].transed = 0x00;
-            for(int j=0;j<8;j++)
+            for(int j=0;j<7;j++)
                 ytShm->eHomeDevice[i].io[j] = 0x00;
             ytShm->eHomeDevice[i].time[0]=0;
             ytShm->eHomeDevice[i].time[1]=0;
@@ -168,8 +168,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                     ytShm->eHomeDevice[i].Inited = 0x01;
                     ytShm->eHomeDevice[i].onLined = 0x00;
                     ytShm->eHomeDevice[i].savetmp = 0x00;
-                    if(ytShm->eHomeDevice[i].transed==0x01)
-                        fclose(ytShm->eHomeDevice[i].tmpfile);
+//                    if(ytShm->eHomeDevice[i].tmpfile!=NULL)
+//                        fclose(ytShm->eHomeDevice[i].tmpfile);
                     ytShm->eHomeDevice[i].tmpfile = NULL;
                     ytShm->eHomeDevice[i].transed = 0x00;
                     ytShm->eHomeDevice[i].io[15]=0x00;
@@ -182,28 +182,6 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
             }
             if(!found){
                 return FALSE;
-//                for(int i=0;i<DEVICES_COUNT;i++){
-//                    if(QString(ytShm->eHomeDevice[i].deviceID).trimmed().length()==0){
-//                        ytShm->eHomeDevice[i].io[8]=0x00;
-//                        ytShm->eHomeDevice[i].LoginId = lUserID;
-//                        sprintf(ytShm->eHomeDevice[i].deviceID,"%s",QString((char *)(pDevInfo->byDeviceID)).replace(" ","_").toUtf8().data());
-//                        obj->appendLog(QString("[ %1 (%2) regist new dev ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
-//                        ytShm->eHomeDevice[i].Connected = 0x00;
-//                        ytShm->eHomeDevice[i].onLined = 0x00;
-//                        setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
-//                        setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
-//                        ytShm->eHomeDevice[i].Inited = 0x01;
-//                        ytShm->eHomeDevice[i].savetmp = 0x00;
-//                        if(ytShm->eHomeDevice[i].transed==0x01)
-//                            fclose(ytShm->eHomeDevice[i].tmpfile);
-//                        ytShm->eHomeDevice[i].tmpfile = NULL;
-//                        ytShm->eHomeDevice[i].transed = 0x00;
-//                        ytShm->eHomeDevice[i].io[15]=0x00;
-//                        ytShm->eHomeDevice[i].io[14]=0x03;
-//                        idx = i;
-//                        break;
-//                    }
-//                }
             }
 
             //输入参数
@@ -222,7 +200,6 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                 ytShm->eHomeDevice[i].io[15]=0x00;
                 ytShm->eHomeDevice[i].io[14]=0x02;
                 ytShm->eHomeDevice[i].LoginId = -1;
-//                printf("%s link off\n",ytShm->eHomeDevice[i].deviceID);
                 obj->appendLog(QString("[ %1 (%2) offline ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
                 if(ytShm->eHomeDevice[i].SessionId>=0){
                     if(NET_ECMS_StopGetRealStream(lUserID,ytShm->eHomeDevice[i].SessionId)){
@@ -240,8 +217,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                                 setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
 
                                 ytShm->eHomeDevice[i].savetmp = 0x00;
-                                if(ytShm->eHomeDevice[i].transed==0x01)
-                                    fclose(ytShm->eHomeDevice[i].tmpfile);
+//                                if(ytShm->eHomeDevice[i].tmpfile!=NULL)
+//                                    fclose(ytShm->eHomeDevice[i].tmpfile);
                                 ytShm->eHomeDevice[i].tmpfile = NULL;
                                 ytShm->eHomeDevice[i].transed = 0x00;
                                 if(ytShm->eHomeDevice[i].lLinkHandle>0){
@@ -265,8 +242,8 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                     setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
                     ytShm->eHomeDevice[i].lLinkHandle = -1;
                     ytShm->eHomeDevice[i].savetmp = 0x00;
-                    if(ytShm->eHomeDevice[i].transed==0x01)
-                        fclose(ytShm->eHomeDevice[i].tmpfile);
+//                    if(ytShm->eHomeDevice[i].transed==0x01)
+//                        fclose(ytShm->eHomeDevice[i].tmpfile);
                     ytShm->eHomeDevice[i].tmpfile = NULL;
                     ytShm->eHomeDevice[i].transed = 0x00;
                 }
@@ -395,32 +372,27 @@ void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned
 
 BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData)
 {
-//    LONG lListenHandle = -1;
-//    lListenHandle = lHandle;
     int i,idx;
+    QDateTime dt = QDateTime::currentDateTime();
     CoreObject *obj = (CoreObject *)pUserData;
     DWORD dwType = pAlarmMsg->dwAlarmType;  //不同的报警类型(dwAlarmType),pAlarmInfo对应不同的报警信息类型
 
     if(pAlarmMsg->pHttpUrl!=NULL)
         dwType = EHOME_ISAPI_ALARM;
-//    printf("Callback of alarm listening, dwAlarmType[%d]\n", dwType);
-
     switch(dwType)
     {
     case EHOME_ALARM_UNKNOWN://未知报警信息
-//        printf("Unknown Alarm Type!\n");
         break;
     case EHOME_ALARM://基本报警信息:移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等
     {
         NET_EHOME_ALARM_INFO struAlarmInfo;
         memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));
-//        printf("Basic Alarm: Device ID[%s], szAlarmTime[%s], Alarm Type[%d], Action[%d], VideoChannel[%d]!\n", struAlarmInfo.szDeviceID, \
-//            struAlarmInfo.szAlarmTime, struAlarmInfo.dwAlarmType, struAlarmInfo.dwAlarmAction, struAlarmInfo.dwVideoChannel);
         if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_LEFT)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE))
         {
             QString devId = QString(struAlarmInfo.szDeviceID);
             if(obj->checkAlarmDevTime(devId)){
-                obj->appendLog(QString("Basic Alarm: Device ID[%1], szAlarmTime[%2], Alarm Type[%3], Action[%4], VideoChannel[%5]!")
+                obj->appendLog(QString("[ %1 alm] Basic Alarm: Device ID[%2], szAlarmTime[%3], Alarm Type[%4], Action[%5], VideoChannel[%6]!")
+                               .arg(dt.toString("yyyy-MM-dd HH:mm:ss"))
                                .arg(struAlarmInfo.szDeviceID).arg(struAlarmInfo.szAlarmTime).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction).arg(struAlarmInfo.dwVideoChannel));
                 for(idx=0;idx<DEVICES_COUNT;idx++){
                     if((strcmp(ytShm->eHomeDevice[idx].deviceID,(char*)(struAlarmInfo.szDeviceID))==0)
@@ -436,51 +408,17 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
                         }
                         QString time1 = QString(struAlarmInfo.szAlarmTime);
                         QString time2 = time1.mid(0,10)+" "+time1.mid(11,8);
-            //            QString sql = QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','','','占道检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
-            //                .arg(1).arg(struAlarmInfo.szDeviceID).arg(time2).arg(struAlarmInfo.dwAlarmAction==0?1:0)
-            //                .arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction);
-            //            obj->sqlList.append(sql);
                         if(struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)
-                            obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0)));
+                            obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0),dt.toTime_t()));
                         else
-                            obj->alarmList.append(AlarmEvent(devId,time2,1));
+                            obj->alarmList.append(AlarmEvent(devId,time2,1,dt.toTime_t()));
                         ytShm->eHomeDevice[idx].io[6]=0x01;
                     }
                 }
             }
-
-//            for(i=0;i<DEVICES_COUNT;i++){
-//                if(strcmp(ytShm->eHomeDevice[i].deviceID,(char*)(struAlarmInfo.szDeviceID))==0){
-//                    ytShm->eHomeDevice[i].io[6]=0x01;
-//                }
-//            }
         }
     }
         break;
-//    case EHOME_ALARM_HEATMAP_REPORT://热度图报告上传
-//        NET_EHOME_HEATMAP_REPORT struHeatmapInfo;
-//        memcpy(&struHeatmapInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_HEATMAP_REPORT));
-//        printf("Heatmap report: Device ID[%s], StartTime[%s], StopTime[%s], dwVideoChannel[%d]!\n", struHeatmapInfo.byDeviceID, \
-//            struHeatmapInfo.byStartTime, struHeatmapInfo.byStopTime, struHeatmapInfo.dwVideoChannel);
-//        break;
-//    case EHOME_ALARM_FACESNAP_REPORT://人脸抓拍报告上传
-//        NET_EHOME_FACESNAP_REPORT struFaceSnap;
-//        memcpy(&struFaceSnap, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_FACESNAP_REPORT));
-//        printf("Face snap: Device ID[%s], AlarmTime[%s], dwFaceScore[%d], dwVideoChannel[%d]!\n", struFaceSnap.byDeviceID, \
-//            struFaceSnap.byAlarmTime, struFaceSnap.dwFaceScore, struFaceSnap.dwVideoChannel);
-//        break;
-//    case EHOME_ALARM_GPS://GPS信息上传
-//        NET_EHOME_GPS_INFO struGpsInfo;
-//        memcpy(&struGpsInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_GPS_INFO));
-//        printf("GPS info: Device ID[%s], SampleTime[%s], Longitude[%d], Latitude[%d]!\n", struGpsInfo.byDeviceID, \
-//            struGpsInfo.bySampleTime, struGpsInfo.dwLongitude, struGpsInfo.dwLatitude );
-//        break;
-//    case EHOME_ALARM_CID_REPORT://报警主机CID报警信息
-//        NET_EHOME_CID_INFO struCIDInfo;
-//        memcpy(&struCIDInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_CID_INFO));
-//        printf("CID info: Device ID[%s], AlarmTime[%s], CID Code[%d], CID Type[%d], CID Describe[%s]!\n", struCIDInfo.byDeviceID, \
-//        struCIDInfo.byTriggerTime, struCIDInfo.dwCIDCode, struCIDInfo.dwCIDType, struCIDInfo.byCIDDescribe );
-//        break;
     case EHOME_ISAPI_ALARM:
         ProcessHttpAlarmInfo(pAlarmMsg->pAlarmInfo,pAlarmMsg->dwAlarmInfoLen,pAlarmMsg->pHttpUrl,pAlarmMsg->dwHttpUrlLen,pUserData);
         break;
@@ -502,6 +440,7 @@ BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iData
                 if(ytShm->eHomeDevice[i].savetmp==0x00){
                     if(ytShm->eHomeDevice[i].tmpfile!=NULL){
                         fclose(ytShm->eHomeDevice[i].tmpfile);
+                        ytShm->eHomeDevice[i].tmpfile = NULL;
                     }
                     QString tmpfile = QString("/tmp/%1.mp4").arg(ytShm->eHomeDevice[i].deviceID).replace(" ","_");
                     sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
@@ -603,6 +542,7 @@ void CoreObject::start()
         exit(1);
     }
 //    printf("NET_EALARM_StartListen!\n");
+    NET_ECMS_SetLogToFile(1,QString("/var/log/usky/").toUtf8().data(),true);
     for(int i=0;i<DEVICES_COUNT;i++){
         ytShm->eHomeDevice[i].previewport = 58000+i;
         ytShm->eHomeDevice[i].listen_alarm_handle = lHandle;
@@ -839,7 +779,6 @@ void CoreObject::time_out()
                         processList.at(i)->close();
                     processList.at(i)->start(cmd1);
                     ytShm->eHomeDevice[i].time[1] = t.toTime_t();
-//                    qDebug()<<QString("%1 will on line.(%2)").arg(ytShm->eHomeDevice[i].deviceID).arg(i).toUtf8().data();
                 }
             }else if((ytShm->eHomeDevice[i].transed==0x01)&&(ytShm->eHomeDevice[i].time[1]>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].time[1])>600)){
                 if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
@@ -899,7 +838,6 @@ void CoreObject::time_out()
                     if(phonelist.length()>0){
                         QString data = QString("evt_name=%1&device_code=%2&phone=%3&insert_id=%4&time=%5&bz=%1").arg(type).arg(rep.Device_Code).arg(phonelist).arg(insertId).arg(rep.Event_Time)
                                 .replace(",","%2C").replace(":","%3A").replace(" ","+");
-//                        printf("%s\n",data.toUtf8().data());
                         wxThreads[wxcur]->appendData(data);
                         wxcur++;
                         wxcur &= 0x07;
@@ -916,12 +854,21 @@ void CoreObject::time_out()
             while(sqlList.length()>0){
                 db.exec(sqlList.first());
                 appendLog(QString("[ %1 sql ] %2").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(sqlList.first()));
-//                system(QString("echo \"%1\" > /tmp/pic_sql.log").arg(sqlList.first()).toUtf8().data());
-//                printf("%s\n",sqlList.first().toUtf8().data());
                 sqlList.removeFirst();
             }
             db.close();
         }
     }
+    int a_count=0;
+    t = QDateTime::currentDateTime();
+    QListIterator<AlarmEvent> AlaList(alarmList);
+    while(AlaList.hasNext()){
+        AlarmEvent ae = AlaList.next();
+        if((t.toTime_t()-ae.t_stamp)>120){
+            a_count++;
+            if(a_count>8)
+                exit(1);
+        }
+    }
     isWorking = false;
 }

+ 5 - 2
CamCore/coreobject.h

@@ -23,22 +23,25 @@
 #include <QSqlDatabase>
 #include <QSqlQuery>
 #include <QVariant>
-#include <QDebug>
+//#include <QDebug>
+#include <QListIterator>
 #include "ttsthreads.h"
 #include "wechartthreads.h"
 #include "logthread.h"
 
 class AlarmEvent {
 public:
-    explicit AlarmEvent(QString id, QString etime, int sta){
+    explicit AlarmEvent(QString id, QString etime, int sta, uint t){
         Device_Code = id;
         Event_Time = etime;
         Event_Status = sta;
+        t_stamp = t;
     }
 
     QString Device_Code;
     QString Event_Time;
     int Event_Status;
+    uint t_stamp;
 };
 
 class Alarm_Report {

+ 5 - 5
YtCam.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.7.2, 2021-05-17T08:35:57. -->
+<!-- Written by QtCreator 4.7.2, 2021-05-20T15:24:52. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -192,7 +192,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">CamCore/CamCore.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/CamCore</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -249,7 +249,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">CamDog/CamDog.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/CamDog</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -306,7 +306,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">cgi/cgi.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/cgi</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -363,7 +363,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ytDHCamCore/ytDHCamCore.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/ytDHCamCore</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>