//启动监听 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}登陆失败"); } }
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}+写入失败"); } }