Exemple #1
0
 /// <summary>
 /// 算法请求
 /// </summary>
 public void InitAlgorithm(string typeName = "")
 {
     try
     {
         using (var con = new MyContext())
         {
             var components = con.Component.Where(c => c.Type == ComponentType.AI && c.Line == 0).ToList();
             if (components.Count > 0)
             {
                 var algorithmInfos = ProtoBDManager.AlgorithmQuery(false, typeName);
                 foreach (var item in algorithmInfos)
                 {
                     //配置的是缺岗类型则传入设备的通讯ID
                     if (item.type != AlgorithmInfo.Type.CAPTURE)
                     {
                         string name = Enum.GetName(typeof(AlgorithmType), Convert.ToInt32(item.type));
                         if (name == "ATTENDANCE_IN" || name == "ATTENDANCE_OUT")
                         {
                             name = ManagerHelp.FaceName.ToUpper();
                         }
                         if (components.Where(c => c.Name.ToUpper() == name).Any())
                         {
                             string identity = components.FirstOrDefault(c => c.Name.ToUpper() == name).Cid;
                             assembly.SendAlgorithmSet(item, identity);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Exemple #2
0
        /// <summary>
        /// 初使化设备
        /// </summary>
        public bool InitDevice()
        {
            List <SmartWeb.Models.Component> list = new List <SmartWeb.Models.Component>();

            using (var con = new MyContext())
            {
                list = con.Component.Where(c => c.Type != ComponentType.WEB && c.Line == 0).ToList();
            }
            if (list.Count > 0)
            {
                var deviceInfos = ProtoBDManager.DeviceQuery(null);
                foreach (var item in deviceInfos)
                {
                    var    type = ManagerHelp.GetComponentType((int)item.factory);
                    string toId = "";
                    if (list.Where(c => c.Type == type).Any())
                    {
                        toId = list.FirstOrDefault(c => c.Type == type).Cid;
                    }
                    //海康和大华组件尚未启动则不需要发送组件注册消息
                    if (toId == "")
                    {
                        continue;
                    }
                    assembly.SendDeveiceAdd(item, toId);
                }
                return(true);
            }
            else
            {
                ManagerHelp.isInit = false;
                return(false);
            }
        }
Exemple #3
0
 /// <summary>
 /// 船员请求
 /// </summary>
 /// <param name="nextIdentity"></param>
 public void InitCrew()
 {
     using (var con = new MyContext())
     {
         var component = con.Component.FirstOrDefault(c => c.Type != ComponentType.AI && c.Name == ManagerHelp.FaceName && c.Line == 0);
         if (component != null)
         {
             var crewInfos = ProtoBDManager.CrewQuery();
             foreach (var item in crewInfos)
             {
                 assembly.SendCrewAdd(item, component.Cid);
             }
         }
     }
 }
Exemple #4
0
 /// <summary>
 /// 发送缺岗通知
 /// </summary>
 public void LoadNotice()
 {
     Task.Factory.StartNew(state =>
     {
         //获取间隔时间
         int departureTime = ManagerHelp.DepartureTime;
         while (true)
         {
             try
             {
                 using (var context = new MyContext())
                 {
                     //获取船的航行状态
                     var ship = context.Ship.FirstOrDefault();
                     if (ship == null)
                     {
                         continue;
                     }
                     DateTime dt = DateTime.Now;
                     bool flag   = false;
                     if (ManagerHelp.LiveTime != "")
                     {
                         if ((dt - Convert.ToDateTime(ManagerHelp.LiveTime)).Minutes >= departureTime)
                         {
                             flag = true;
                         }
                     }
                     //Console.WriteLine("考勤人数" + ManagerHelp.atWorks.Count + " 当前时间:" + dt + " 离岗时间:" + ManagerHelp.LiveTime);
                     //ManagerHelp.atWorks 考勤人数的集合
                     if (ship.Flag && ManagerHelp.atWorks.Count <= 0 && flag)
                     {
                         var algo = context.Algorithm.Where(c => c.Type == AlgorithmType.CAPTURE).ToList();
                         if (algo.Count == 0)
                         {
                             continue;
                         }
                         var camares = context.Camera.Where(c => algo.Select(a => a.Cid).Contains(c.Id)).ToList();
                         foreach (var item in camares)
                         {
                             var device = context.Device.FirstOrDefault(c => c.Id == item.DeviceId);
                             if (device == null)
                             {
                                 continue;
                             }
                             var component = context.Component.FirstOrDefault(c => c.Type == ManagerHelp.GetComponentType((int)device.factory));
                             if (component == null)
                             {
                                 continue;
                             }
                             CaptureInfo captureInfo = new CaptureInfo()
                             {
                                 cid = item.Id + "\0",//C++ 字符串是以\0结尾的
                                 did = item.DeviceId + "\0",
                                 idx = item.Index
                             };
                             assembly.SendCapture(captureInfo, Event.Command.CAPTURE_JPEG_REQ, component.Cid);
                             Console.WriteLine("发送缺岗请求成功,时间" + dt.ToString("yyyy-MM-dd HH:mm:ss"));
                             ManagerHelp.LiveTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                         }
                     }
                 }
             }
             catch (Exception ex)
             {
                 ProtoBDManager.AddReceiveLog("ExceptionCapture", "", ex.Message);
             }
             Thread.Sleep(1000);//单位毫秒
         }
     }, TaskCreationOptions.LongRunning);
 }