Esempio n. 1
0
        //启动监听
        public static async Task LoginStartListenAsync(string ip, string prot, string user, string pwd)
        {
            Console.WriteLine($"使用线程ID:{Thread.CurrentThread.ManagedThreadId}");
            loghelper.loginfo.Info($"使用线程ID:{Thread.CurrentThread.ManagedThreadId}");
            NETClient.Init(disConnectCallBack, IntPtr.Zero, null);          //初始化设置断线回掉

            NETClient.SetAutoReconnect(haveReConnectCallBack, IntPtr.Zero); //设定自动重连

            lLoginID = NETClient.Login(ip, Convert.ToUInt16(prot), user, pwd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref device);


            DaHuaSDKHelper daHuaSDK = new DaHuaSDKHelper();

            var alarmdata   = httpHelper.GetAlarmsByHostIP(ip);
            var alarminfo   = daHuaSDK.GetAlarmStatus(lLoginID);
            var onlineinfo  = daHuaSDK.GetConnectionStatus(lLoginID);
            var defenceinfo = daHuaSDK.GetDefenceArmMode(lLoginID);

            lock (locker)
            {
                foreach (var item in alarmdata)
                {
                    AppAlarmStatus appAlarmStatus = new AppAlarmStatus();

                    var der = alarminfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value;
                    if (!string.IsNullOrEmpty(der))    //报警数据导入
                    {
                        appAlarmStatus.IsAlarm = 1;
                    }
                    else
                    {
                        appAlarmStatus.IsAlarm = 0;
                    }
                    //
                    if (onlineinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Key > 0)    //异常数据
                    {
                        appAlarmStatus.IsAnomaly = int.Parse(onlineinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value);
                    }

                    var defn = defenceinfo.Where(u => u.Key == item.Channel_ID - 1).FirstOrDefault().Value;

                    if (!string.IsNullOrEmpty(defn))
                    {
                        if (defn == EM_DEFENCEMODE.ARMING.ToString())
                        {
                            appAlarmStatus.IsDefence = 1;    //布防
                        }
                        else if (defn == EM_DEFENCEMODE.DISARMING.ToString())
                        {
                            appAlarmStatus.IsDefence = 2;    //撤防
                        }
                        else
                        {
                            appAlarmStatus.IsDefence = -1; //未知
                        }
                    }                                      //布防数据
                    lock (locker)                          //访问http加锁
                    {
                        // var defg = httpHelper.GetAlarmManageStates(item.Alarm_ID).FirstOrDefault();

                        //if (defg != null)
                        //{
                        //    if (defg.TreatmentTimeState != null)//处理状态
                        //    {
                        //        appAlarmStatus.TreatmentState = 0;
                        //    }
                        //    else
                        //    {
                        appAlarmStatus.TreatmentState = 1;
                        //   }
                        // }
                        appAlarmStatus.Channel_ID           = item.Channel_ID;
                        appAlarmStatus.IsOpenDoor           = item.IsOpenOrClosed;//开岗数据
                        appAlarmStatus.LastModificationTime = DateTime.Now.ToString();
                        appAlarmStatus.Alarm_ID             = item.Alarm_ID;
                        appAlarmStatus.AlarmHostIP          = ip;
                    }
                    service.HashSet <AppAlarmStatus>("AlarmStatus_" + item.Alarm_ID, "data", appAlarmStatus);//把数据存到Redis


                    Console.WriteLine($"ip:{ip},通道:{item.Channel_ID},初始化成功!,时间:{appAlarmStatus.LastModificationTime}");
                    loghelper.WriteLog($"ip:{ip},通道:{item.Channel_ID},初始化成功");
                }
            }

            NETClient.SetDVRMessCallBack(messCallBackEx, IntPtr.Zero);//设置报警回掉
            if (IntPtr.Zero != lLoginID)
            {
                bool result = NETClient.StartListen(lLoginID);
                if (result)
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"IP:{ip}开启监听模式");
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"IP:{ip}登陆失败");
            }
        }
Esempio n. 2
0
        public static void  DVRInfoCheckService(AppDVRs appDVRs)
        {
            EFDBHelp <AppDVRCheckInfos> dvrCheckInfoDB = new EFDBHelp <AppDVRCheckInfos>();
            DaHuaSDKHelper   daHuaSDK     = new DaHuaSDKHelper();
            AppDVRCheckInfos dVRCheckInfo = new AppDVRCheckInfos();

            daHuaSDK.DeviceInititalize();
            m_LoginID = daHuaSDK.LoginClick(appDVRs.DVR_IP, appDVRs.DVR_port, appDVRs.DVR_usre, appDVRs.DVR_possword, ref device);

            if (m_LoginID == IntPtr.Zero)    //在线检查
            {
                dVRCheckInfo.DVR_Online = false;
            }
            else
            {
                dVRCheckInfo.DVR_Online = true;
                dVRCheckInfo.DVR_SN     = device.sSerialNumber;
                if (appDVRs.DVR_SN == device.sSerialNumber)
                {
                    dVRCheckInfo.SNChenk = true;
                }
                else
                {
                    dVRCheckInfo.SNChenk = false;
                }
            }

            DateTime dvrtime  = daHuaSDK.GetDVRTime(m_LoginID);
            var      diskinfo = daHuaSDK.GetDiskInfo(m_LoginID);


            dVRCheckInfo.DVR_ID = appDVRs.DVR_ID;
            dVRCheckInfo.LastModificationTime = DateTime.Now;
            dVRCheckInfo.CreationTime         = DateTime.Now;

            //时间检查验证
            var servertime = DateTime.Now;

            dVRCheckInfo.DVRTime = dvrtime.ToString();;
            if (DateTime.Compare(servertime.AddSeconds(-5), dvrtime) < 0 && DateTime.Compare(servertime.AddSeconds(5), dvrtime) > 0)
            {
                dVRCheckInfo.TimeInfoChenk = true;
            }
            else
            {
                dVRCheckInfo.TimeInfoChenk = false;
            }

            //硬盘检查

            if (appDVRs.Hard_drive == null)
            {
                appDVRs.Hard_drive = 0;
            }
            int dvrhard = (int)(appDVRs.Hard_drive * 0.91);
            var disksum = diskinfo.Sum(u => int.Parse(u.TotalSpace)) / 1024 / 1024;

            if (dvrhard == disksum)
            {
                dVRCheckInfo.DiskTotal = disksum;
                dVRCheckInfo.DiskChenk = true;
            }
            else
            {
                dVRCheckInfo.DiskTotal = disksum;
                dVRCheckInfo.DiskChenk = false;
            }


            //90天存储检查

            //String startTime = DateTime.Now.AddDays(-90).ToString("yyyy-MM-dd hh:mm:ss");
            //String endTime = DateTime.Now.AddDays(-90).AddHours(1).ToString("yyyy-MM-dd hh:mm:ss"); ;
            //string url2 = $"{dvrurl}/api/DVRInfo/QueryVideoFileByTime?IP={item.DVR_IP}&name={item.DVR_usre}&password={item.DVR_possword}&startTimestr={startTime}&endTimestr={endTime}";
            //var handler2 = new HttpClientHandler();
            //var response2 = _httpClient.GetAsync(url2).Result;
            //var dt2 = response2.Content.ReadAsStringAsync().Result;
            //var data2 = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(dt2);

            //if (data2==-1)
            //{
            //    response2 = _httpClient.GetAsync(url2).Result;
            //    dt2 = response2.Content.ReadAsStringAsync().Result;
            //   data2 = Newtonsoft.Json.JsonConvert.DeserializeObject<int>(dt2);
            //}


            //if (data2>0)
            //{
            //    dVRCheckInfo.VideoCheck90Day = true;
            //}
            //if (data2==0)
            //{
            //    dVRCheckInfo.VideoCheck90Day = false;
            //}


            var res = dvrCheckInfoDB.Add(dVRCheckInfo);

            if (res > 0)
            {
                Console.WriteLine($"{appDVRs.DVR_ID}+{DateTime.Now}+写入成功");
                loghelper.WriteLog($"{appDVRs.DVR_ID}+{DateTime.Now}+写入成功");
            }
            else
            {
                Console.WriteLine($"{appDVRs.DVR_ID}+{DateTime.Now}+写入失败");
                loghelper.WriteLog($"{appDVRs.DVR_ID}+{DateTime.Now}+写入失败");
            }
        }