Ejemplo n.º 1
0
 /// <summary>
 /// 车牌识别识别到车牌时回调页面显示
 /// </summary>
 /// <param name="platenum"></param>
 /// <param name="headpath">这个是虚拟路径+文件名</param>
 /// <param name="dtime"></param>
 public void WatchPlateInfo(PlateDisplay plate)
 {
     if (PlateWatchEvent != null)
     {
         PlateWatchEvent(plate);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// 回调车牌识别给LED、车牌识别页面
        /// </summary>
        /// <param name="platenum"></param>
        /// <param name="headpath"></param>
        /// <param name="dtime"></param>
        private void ParkingSingleton_PlateWatchEvent(PlateDisplay zresult)
        {
            #region 显示给页面
            Clients.All.feedbackPlateInfo(zresult);
            #endregion

            #region LED
            var iccd = new
            {
                Warehouse = zresult.Warehouse,
                HallID    = zresult.DeviceCode,
                Message   = zresult.PlateNum
            };
            string jsonIccd = JsonConvert.SerializeObject(iccd);
            Clients.All.ICCodeInfoToLed(jsonIccd);
            #endregion
        }
Ejemplo n.º 3
0
        public async Task <Response> AddPlateAsync(int warehouse, int hallID, string plateNum, string headimgpath, int trType)
        {
            Response resp = new Response();
            Log      log  = LogFactory.GetLogger("AddPlate");

            string virtualPath = "";

            try
            {
                if (!string.IsNullOrEmpty(headimgpath))
                {
                    string[] pathArr = headimgpath.Split('\\');
                    int      count   = pathArr.Length;
                    if (count > 2)
                    {
                        if (string.IsNullOrEmpty(configpath))
                        {
                            configpath = XMLHelper.GetRootNodeValueByXpath("root", "PlateVirtualPath");
                        }
                        virtualPath = configpath + pathArr[count - 2] + @"/" + pathArr[count - 1];
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.ToString());
            }

            PlateMappingDev mapping = await FindPlateAsync(warehouse, hallID);

            log.Warn("开始写车牌信息!");
            if (mapping == null)
            {
                PlateMappingDev mp = new PlateMappingDev {
                    Warehouse      = warehouse,
                    DeviceCode     = hallID,
                    PlateNum       = plateNum,
                    HeadImagePath  = virtualPath,
                    PlateImagePath = null,
                    InDate         = DateTime.Now
                };
                resp = await manager.AddAsync(mp);
            }
            else
            {
                log.Warn("更新车牌信息!");
                if (string.IsNullOrEmpty(mapping.PlateNum))
                {
                    mapping.PlateNum      = plateNum;
                    mapping.HeadImagePath = virtualPath;
                    mapping.InDate        = DateTime.Now;

                    resp = await manager.UpdateAsync(mapping);
                }
                else
                {
                    if (mapping.PlateNum != plateNum)
                    {
                        //车牌识别不一致,则先判断时间,当前步进
                        Device hall = await new CWDevice().FindAsync(d => d.Warehouse == warehouse && d.DeviceCode == hallID);
                        if (hall != null)
                        {
                            if (hall.InStep == 30)
                            {
                                resp.Message = "30步时不接收任何的车牌识别";
                                return(resp);
                            }
                        }
                        //在30秒内,有虚拟线圈触发,以当前的为准
                        if (DateTime.Compare(DateTime.Now, mapping.InDate.AddSeconds(30)) < 0 ||
                            DateTime.Compare(DateTime.Now, mapping.InDate.AddMinutes(5)) > 0)
                        {
                            //如果是虚拟线圈触发,则以当前为准
                            if (trType == 8)
                            {
                                mapping.PlateNum      = plateNum;
                                mapping.HeadImagePath = virtualPath;
                                mapping.InDate        = DateTime.Now;

                                resp = await manager.UpdateAsync(mapping);

                                if (resp.Code == 1)
                                {
                                    log.Info("更新车牌信息成功!");
                                }
                            }
                        }
                    }
                    else
                    {
                        //更新下页面
                        resp.Code = 1;
                    }
                }
            }
            //推送到页面中
            if (resp.Code == 1)
            {
                PlateDisplay disp = new PlateDisplay
                {
                    Warehouse    = warehouse,
                    DeviceCode   = hallID,
                    PlateNum     = plateNum,
                    HeadImgVPath = virtualPath,
                    RcdDtime     = DateTime.Now.ToString()
                };
                SingleCallback.Instance().WatchPlateInfo(disp);
            }
            return(resp);
        }