Пример #1
0
 public void camera_OnPlate(object sender, DataUploadEventArgs e)
 {
     if (null != this.OnPlate)
     {
         this.OnPlate(this, e);
     }
 }
 /// <summary>
 /// 放行出场
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnOK_Click(object sender, EventArgs e)
 {
     try
     {
         if (CommHelper.ValidateCarNum(this.tbCarNo.CarNO) || CommHelper.ValidateUnlicensedCar(this.tbCarNo.CarNO))
         {
             dataUploadRecord.plateNum       = this.tbCarNo.CarNO;
             dataUploadRecord.CHN_CODE       = this.cbChannelCode.SelectedValue.ToString();
             dataUploadRecord.CHN_NAME       = this.cbChannelCode.Text;
             dataUploadRecord.REPORTIMG_TIME = Convert.ToDateTime(this.lbInOutTime.Text);
             dataUploadRecord.carType        = Convert.ToInt32(this.cmbCarType.SelectedValue.ToString());
             dataUploadRecord.CarType        = (enumCarType)System.Enum.Parse(typeof(enumCarType), this.cmbCarType.SelectedValue.ToString());
             var converter            = EngineContext.Current.Resolve <IRecordConvert>(enumReleaseType.HandRelease.ToString());
             DataUploadEventArgs args = new DataUploadEventArgs()
             {
                 TempRecordInfo = dataUploadRecord
             };
             var recordInfo = converter.ConvertRecord(args);
             ThreadMessageTransact.Instance.AcceptFormalData(recordInfo);
             this.Close();
         }
         else
         {
             new G5MessageBox("请输入正确的车牌号码!").ShowDialog();
         }
     }
     catch (Exception ex)
     {
         LogHelper.Log.Error(ex.Message);
     }
 }
Пример #3
0
        private int OnPlateResult(int handle, IntPtr pUserData, IntPtr pResult, uint uNumPlates, CVzClientSDK.VZ_LPRC_RESULT_TYPE eResultType, IntPtr pImgFull, IntPtr pImgPlateClip)
        {
            DataUploadRecord record = new DataUploadRecord();

            try
            {
                CVzClientSDK.TH_PlateResult result = (CVzClientSDK.TH_PlateResult)Marshal.PtrToStructure(pResult, typeof(CVzClientSDK.TH_PlateResult));
                string str  = new string(result.license);
                string str2 = new string(result.color);
                record.PlateColorStr = str2.Substring(0, str2.IndexOf('\0'));
                record.plateNum      = str.Substring(0, str.IndexOf('\0'));
                record.picCapTime    = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                record.ip            = this.IP;
            }
            catch (Exception)
            {
            }
            finally
            {
                DataUploadEventArgs e = new DataUploadEventArgs {
                    TempRecordInfo = record
                };
                this.OnShapeChanged(e);
            }
            return(0);
        }
Пример #4
0
        public void control_UserControlBtnClicked(object sender, string ID)
        {
            DataUploadRecord dataUploadRecord = new DataUploadRecord();
            CR_INOUT_RECODE  inOutRecord      = bllRecord.GetModel(ID);

            if (null != inOutRecord)
            {
                dataUploadRecord.plateNum       = inOutRecord.VEHICLE_NO;
                dataUploadRecord.REPORTIMG_TIME = inOutRecord.IN_TIME;
                dataUploadRecord.PARTITION_CODE = inOutRecord.IN_PARTITION_CODE;
                var partitionChildren = CommHelper.GetOrgInfos(dataUploadRecord.PARTITION_CODE);
                //查找中央缴费定点
                if (null != partitionChildren && partitionChildren.Count > 0)
                {
                    var centralPaymentChannel = partitionChildren.Where(x => x.channelType == enumChannelType.centerPayment).FirstOrDefault();
                    if (null != centralPaymentChannel)
                    {
                        dataUploadRecord.CHN_CODE = centralPaymentChannel.ORGANIZATION_CODE;
                    }
                }
                dataUploadRecord.CHANNEL_TYPE = enumChannelType.centerPayment;
                dataUploadRecord.INOUT_RECODE = inOutRecord;
                DataUploadEventArgs args = new DataUploadEventArgs()
                {
                    TempRecordInfo = dataUploadRecord
                };
                ThreadMessageTransact.Instance.AcceptFormalData(dataUploadRecord);
            }
        }
Пример #5
0
        protected virtual void OnShapeChanged(DataUploadEventArgs e)
        {
            EventHandler <DataUploadEventArgs> onPlate = this.OnPlate;

            if (onPlate != null)
            {
                onPlate(this, e);
            }
        }
Пример #6
0
        public static void RequestLatestState()
        {
            if (DataUploadHandler != null)
            {
                if (!DataCreating)
                {
                    DataCreating = true;
                    new System.Threading.Thread(() =>
                    {
                        for (int i = 0; i < CoreObjects.Count; i++)
                        {
                            CoreObjects.Cells[i].State     = (Field.Domain.CellInfomation.IgnitionState)Enum.ToObject(typeof(Field.Domain.CellInfomation.IgnitionState), (int)CoreObjects.Infomation.State[i]);
                            CoreObjects.Cells[i].Value     = CoreObjects.Infomation.Value[i];
                            CoreObjects.Cells[i].Signal    = CoreObjects.Infomation.Signal[i];
                            CoreObjects.Cells[i].Potential = CoreObjects.Infomation.Potential[i];
                            CoreObjects.Cells[i].Activity  = CoreObjects.Infomation.Activity[i];
                            int start = (int)CoreObjects.Infomation.ConnectionStartPosition[i];
                            for (int j = 0; j < CoreObjects.Infomation.ConnectionCount[i]; j++)
                            {
                                CoreObjects.Cells[i].ConnectionWeight[j] = CoreObjects.Infomation.Weight[start + j];
                            }
                        }
                        //Parallel.For(0, CoreObjects.Count, new ParallelOptions()
                        //{
                        //    MaxDegreeOfParallelism = 1,
                        //}, i =>
                        //{
                        //    CoreObjects.Cells[i].Value = CoreObjects.Infomation.Value[i];
                        //    CoreObjects.Cells[i].Signal = CoreObjects.Infomation.Signal[i];
                        //    CoreObjects.Cells[i].Potential = CoreObjects.Infomation.Potential[i];
                        //    CoreObjects.Cells[i].Activity = CoreObjects.Infomation.Activity[i];
                        //});

                        var e            = new DataUploadEventArgs();
                        e.AxonConnection = new DataUploadEventArgs.AxonConnectionIndex()
                        {
                            Average = CoreObjects.AxsonConnectionAverage,
                            Max     = CoreObjects.AxsonConnectionMax,
                            Min     = CoreObjects.AxsonConnectionMin,
                        };
                        e.AreaCorner = CoreObjects.AreaCorner;
                        foreach (var cell in CoreObjects.Cells)
                        {
                            e.Infomations.Add(cell.Clone());
                        }
                        e.ProcessTime   = DateTime.Now - CoreObjects.LatestSequenceTime;
                        e.ProcessFrame  = 1 + (CoreObjects.MaxStepOverCount - CoreObjects.LatestSequenceIndex);
                        CoreObjects.FPS = 0.9 * CoreObjects.FPS + (1 - 0.9) * ((1000.0 / (e.ProcessTime.TotalMilliseconds / e.ProcessFrame)));
                        e.FPS           = CoreObjects.FPS;
                        DataUploadHandler?.Invoke(e);
                        CoreObjects.LatestSequenceTime  = DateTime.Now;
                        CoreObjects.LatestSequenceIndex = CoreObjects.MaxStepOverCount;
                        DataCreating = false;
                    }).Start();
                }
            }
        }
Пример #7
0
        public ProcessRecord ConvertRecord(DataUploadEventArgs data)
        {
            ProcessRecord recordInfo = new ProcessRecord();

            //车牌号码
            recordInfo.INOUT_RECODE.VEHICLE_NO = data.TempRecordInfo.plateNum;
            //特征码
            recordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER = data.TempRecordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER;
            //是否发送短信
            recordInfo.SendSMS = data.TempRecordInfo.SendSMS;
            //手机号码
            recordInfo.Phone = data.TempRecordInfo.Phone;
            //通道编号
            recordInfo.CHN_CODE = data.TempRecordInfo.CHN_CODE;
            //通道名称
            recordInfo.CHN_NAME = data.TempRecordInfo.CHN_NAME;

            //分区信息
            var parentsList = CommHelper.GetOrgInfos(recordInfo.CHN_CODE, false);
            var par         = parentsList.Where(x => x.channelType == enumChannelType.par).LastOrDefault();

            if (null != par)
            {
                recordInfo.PARTITION_CODE = par.ORGANIZATION_CODE;
                recordInfo.PARTITION_NAME = par.OrganizationInfo.ORGANIZATION_NAME;
            }
            //获取工作站信息
            var wsn = parentsList.Where(x => x.channelType == enumChannelType.wsn).LastOrDefault();

            if (null != wsn)
            {
                recordInfo.FIELD_NAME = wsn.OrganizationInfo.ORGANIZATION_NAME;
                recordInfo.FIELD_CODE = wsn.OrganizationInfo.ORGANIZATION_CODE;
            }

            //获取操作员信息
            if (null != GlobalEnvironment.LocalUserInfo)
            {
                recordInfo.OPERATOR_ID   = GlobalEnvironment.LocalUserInfo.USER_ID;
                recordInfo.OPERATOR_NAME = GlobalEnvironment.LocalUserInfo.USER_NAME;
            }
            //车牌号码
            recordInfo.INOUT_RECODE.VEHICLE_NO = data.TempRecordInfo.plateNum;
            //入场类型
            recordInfo.PARK_TYPE = "无牌车放行";
            //刷卡时间
            recordInfo.REPORTIMG_TIME = data.TempRecordInfo.REPORTIMG_TIME;
            //出入场类型
            recordInfo.CHANNEL_TYPE = data.TempRecordInfo.CHANNEL_TYPE;
            //抓拍图片
            recordInfo.PicFullName = data.TempRecordInfo.fullPicName;
            //初始化公共信息
            base.InitBaseInfo(recordInfo);

            return(recordInfo);
        }
 /// <summary>
 /// 往队列中添加临时数据
 /// </summary>
 /// <param name="acceptBytes"></param>
 public void AcceptMiddData(DataUploadEventArgs args)
 {
     if (CommHelper.ValidateCarNum(args.TempRecordInfo.plateNum))
     {
         lock (MiddDataQue)
             MiddDataQue.Enqueue(args);
         MiddDataEvent.Set();
         var    Porg    = GlobalEnvironment.ListOragnization.Where(x => x.IP == args.TempRecordInfo.ip).FirstOrDefault();
         string OrgCode = Porg == null ? string.Empty : Porg.PARENT_CODE;
         LogHelper.Log.Info("收到通道【" + OrgCode + "】上的设备【" + args.TempRecordInfo.ip + "】上传识别的正确车牌【" + args.TempRecordInfo.plateNum + "】,在" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
     }
 }
 /// <summary>
 /// 处理队列中的数据
 /// </summary>
 /// <param name="state"></param>
 public void MiddDataWork(object state)
 {
     while (true)
     {
         try
         {
             MiddDataEvent.WaitOne();
             while (MiddDataQue.Count > 0)
             {
                 DataUploadEventArgs args = null;
                 lock (MiddDataQueLock)
                 {
                     if (MiddDataQue.Count > 0)
                     {
                         args = MiddDataQue.Dequeue();
                     }
                 }
                 if (null != args)
                 {
                     var converter = EngineContext.Current.Resolve <IRecordConvert>(args.releaseType.ToString());
                     if (null != converter)
                     {
                         ProcessRecord recordinfo = converter.ConvertRecord(args);
                         if (null != recordinfo)
                         {
                             AcceptFormalData(recordinfo);
                         }
                     }
                     else
                     {
                     }
                 }
             }
             MiddDataEvent.Reset();
         }
         catch (Exception ex)
         {
             MiddDataEvent.Reset();
             LogHelper.Log.Error(ex.Message, ex.InnerException);
         }
     }
 }
        /// <summary>
        /// 上报中间数据,缓存一段时间
        /// </summary>
        /// <param name="e"></param>
        public void AddRecognitioMiddData(DataUploadEventArgs e)
        {
            lock (channelLock)
            {
                //通过IP找到设备信息
                var recognitioEqu = GlobalEnvironment.CurrWorkStationOragnization.Where(x => x.IP == e.TempRecordInfo.ip).FirstOrDefault();
                var channels      = CommHelper.GetOrgInfos(recognitioEqu.ORGANIZATION_CODE, false);
                if (null != channels)
                {
                    var currChannel = channels.Where(x => x.channelType == enumChannelType.chn_in || x.channelType == enumChannelType.chn_out).LastOrDefault();
                    //没加定时器,则加上定时器
                    if (!dicCache.ContainsKey(currChannel.ORGANIZATION_CODE))
                    {
                        dicCache.Add(currChannel.ORGANIZATION_CODE, DateTime.Now);
                        LogHelper.Log.Info("【" + currChannel.ORGANIZATION_NAME + "】上的相机【" + e.TempRecordInfo.ip + "】识别到车牌【" + e.TempRecordInfo.plateNum + "】,在" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                }

                if (null != recognitioEqu)
                {
                    var tempCarNo = recognitioEqu.ListRecognitioResult.Where(x => x.CarNo == e.TempRecordInfo.plateNum).FirstOrDefault();
                    if (null != tempCarNo)
                    {
                        tempCarNo.Count += 1;
                    }
                    else
                    {
                        RecognitioResult rResult = new RecognitioResult();
                        rResult.CarNo = e.TempRecordInfo.plateNum;
                        rResult.Count = 1;
                        rResult.args  = e;
                        recognitioEqu.ListRecognitioResult.Add(rResult);
                    }
                    triggerEvent(new ProcessRecord()
                    {
                        OPERATER_TYPE = enumOperaterType.RecognitionEvent, IP = e.TempRecordInfo.ip
                    }, false);
                }
            }
        }
Пример #11
0
        public ProcessRecord ConvertRecord(DataUploadEventArgs data)
        {
            ProcessRecord recordInfo = new ProcessRecord();

            //车牌号码
            recordInfo.INOUT_RECODE.VEHICLE_NO = data.TempRecordInfo.plateNum;
            //特征码
            recordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER = data.TempRecordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER;
            //通道编号
            recordInfo.CHN_CODE = data.TempRecordInfo.CHN_CODE;
            //通道名称
            recordInfo.CHN_NAME = data.TempRecordInfo.CHN_NAME;
            //分区信息
            var parentsList = CommHelper.GetOrgInfos(recordInfo.CHN_CODE, false);
            var par         = parentsList.Where(x => x.channelType == enumChannelType.par).LastOrDefault();

            if (null != par)
            {
                recordInfo.PARTITION_CODE = par.ORGANIZATION_CODE;
                recordInfo.PARTITION_NAME = par.OrganizationInfo.ORGANIZATION_NAME;
            }
            //获取工作站信息
            var wsn = parentsList.Where(x => x.channelType == enumChannelType.wsn).LastOrDefault();

            if (null != wsn)
            {
                recordInfo.FIELD_NAME = wsn.OrganizationInfo.ORGANIZATION_NAME;
                recordInfo.FIELD_CODE = wsn.OrganizationInfo.ORGANIZATION_CODE;
            }
            //设备信息
            var device = GlobalEnvironment.ListOragnization.Where(x => x.productLine == enumProductLine.IdentificationCamera && x.autoRecognition).FirstOrDefault();

            if (null != device)
            {
                recordInfo.DEV_CODE = device.ORGANIZATION_CODE;
            }

            //获取操作员信息
            if (null != GlobalEnvironment.LocalUserInfo)
            {
                recordInfo.OPERATOR_ID   = GlobalEnvironment.LocalUserInfo.USER_ID;
                recordInfo.OPERATOR_NAME = GlobalEnvironment.LocalUserInfo.USER_NAME;
            }
            //车牌号码
            recordInfo.INOUT_RECODE.VEHICLE_NO = data.TempRecordInfo.plateNum;
            //车辆类型
            recordInfo.CarType = data.TempRecordInfo.CarType;
            //入场类型
            recordInfo.PARK_TYPE = "手工放行";
            //刷卡时间
            recordInfo.REPORTIMG_TIME = data.TempRecordInfo.REPORTIMG_TIME;
            //出入场类型
            recordInfo.CHANNEL_TYPE = data.TempRecordInfo.CHANNEL_TYPE;
            //抓拍图片
            recordInfo.PicFullName = data.TempRecordInfo.fullPicName;

            recordInfo.INOUT_RECODE.VEHICLE_TYPE = (int)recordInfo.CarType;
            //初始化公共信息
            base.InitBaseInfo(recordInfo);

            return(recordInfo);
        }
Пример #12
0
        public void SDK_OnPlate(IntPtr pvParam, [In, MarshalAs(UnmanagedType.LPStr)] string pcIP, [In, MarshalAs(UnmanagedType.LPStr)] string pcNumber, [In, MarshalAs(UnmanagedType.LPStr)] string pcColor, IntPtr pcPicData, uint u32PicLen, IntPtr pcCloseUpPicData, uint u32CloseUpPicLen, short s16PlatePosLeft, short s16PlatePosTop, short s16PlatePosRight, short s16PlatePosBottom, float fPlateConfidence, uint u32VehicleColor, uint u32PlateType, uint u32VehicleDir, uint u32AlarmType, uint u32SerialNum, uint u32Reserved2, uint u32Reserved3, uint u32Reserved4)
        {
            DataUploadRecord record = new DataUploadRecord();

            try
            {
                ulong  num = u32Reserved3 + u32Reserved4;
                IntPtr ptr = (IntPtr)num;
                if (ptr != IntPtr.Zero)
                {
                    this.vdcInfo = (ICE_VDC_PICTRUE_INFO_S)Marshal.PtrToStructure(ptr, typeof(ICE_VDC_PICTRUE_INFO_S));
                    if (this.vdcInfo.pstVbrResult != IntPtr.Zero)
                    {
                        this.vbrResult = (ICE_VBR_RESULT_S)Marshal.PtrToStructure(this.vdcInfo.pstVbrResult, typeof(ICE_VBR_RESULT_S));
                    }
                    record.ip       = pcIP;
                    record.plateNum = pcNumber;
                    if (PlateColor.ContainsKey(pcColor))
                    {
                        record.PlateColor = PlateColor[pcColor];
                    }
                    IntPtr source      = pcPicData;
                    byte[] destination = new byte[u32PicLen];
                    Marshal.Copy(source, destination, 0, destination.Length);
                    record.fullPicData = destination;
                    record.fullPicLen  = (int)u32PicLen;
                    IntPtr ptr3    = pcPicData;
                    byte[] buffer2 = new byte[u32PicLen];
                    Marshal.Copy(ptr3, buffer2, 0, buffer2.Length);
                    record.smallPicData    = buffer2;
                    record.smallPicLen     = (int)u32CloseUpPicLen;
                    record.picCapTime      = DateTime.Now.ToString();
                    record.plateConfidence = fPlateConfidence;
                    record.plateType       = (int)u32PlateType;
                    if ((this.vbrResult.fResFeature != null) && (this.vbrResult.fResFeature.Length > 0))
                    {
                        record.specialCode = this.getFeatureCode(this.vbrResult.fResFeature);
                    }
                    record.carType = (int)u32VehicleColor;
                    int    num2       = (int)pvParam;
                    string strPicName = string.Empty;
                    lock (IsLock)
                    {
                        if (u32PicLen > 0)
                        {
                            IntPtr ptr4    = pcPicData;
                            byte[] buffer3 = new byte[u32PicLen];
                            Marshal.Copy(ptr4, buffer3, 0, buffer3.Length);
                            this.storePic(buffer3, "", pcIP, "", false, 0, null, "", out strPicName);
                        }
                    }
                    record.fullPicName = strPicName;
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                float num3 = ((record.plateConfidence - 10f) / 18f) * 100f;
                if ((num3 > ConfigHelper.RecognitionRate) && (this.LastUpLoad.AddSeconds(3.0) <= DateTime.Now))
                {
                    this.LastUpLoad = DateTime.Now;
                    DataUploadEventArgs e = new DataUploadEventArgs {
                        TempRecordInfo = record
                    };
                    this.OnShapeChanged(e);
                }
            }
        }
        public ProcessRecord ConvertRecord(DataUploadEventArgs data)
        {
            ProcessRecord recordInfo = new ProcessRecord();
            var           temp       = EngineContext.Current.Resolve <IPBA_PARKING_PARAM_SETTINGS>();
            //获取当前设备设置参数信息
            var model = temp.GetParkingParamByIP(data.TempRecordInfo.ip);

            if (null != model)
            {
                //获取当前设备组织信息
                var oragani = GlobalEnvironment.CurrWorkStationOragnization.Where(x => x.OrganizationInfo.ORGANIZATION_CODE == model.ORGANIZATION_CODE).FirstOrDefault();
                if (null != oragani)
                {
                    //设备信息
                    recordInfo.DEV_NAME = oragani.OrganizationInfo.ORGANIZATION_NAME;
                    recordInfo.DEV_CODE = oragani.OrganizationInfo.ORGANIZATION_CODE;

                    //分区信息
                    var parentsList = CommHelper.GetOrgInfos(recordInfo.DEV_CODE, false);
                    var par         = parentsList.Where(x => x.channelType == enumChannelType.par).LastOrDefault();
                    if (null != par)
                    {
                        recordInfo.PARTITION_CODE = par.ORGANIZATION_CODE;
                        recordInfo.PARTITION_NAME = par.OrganizationInfo.ORGANIZATION_NAME;
                    }
                    //获取工作站信息
                    var wsn = parentsList.Where(x => x.channelType == enumChannelType.wsn).LastOrDefault();
                    if (null != wsn)
                    {
                        recordInfo.FIELD_NAME = wsn.OrganizationInfo.ORGANIZATION_NAME;
                        recordInfo.FIELD_CODE = wsn.OrganizationInfo.ORGANIZATION_CODE;
                    }
                    //获取岗亭信息
                    var chn = parentsList.Where(x => x.channelType == enumChannelType.chn_in || x.channelType == enumChannelType.chn_out).FirstOrDefault();
                    if (null != chn)
                    {
                        Channel tempChannel = chn as Channel;
                        //组织编码
                        recordInfo.CHN_CODE = chn.OrganizationInfo.ORGANIZATION_CODE;
                        //组织名称
                        recordInfo.CHN_NAME = chn.OrganizationInfo.ORGANIZATION_NAME;
                        //出入口类型
                        recordInfo.CHANNEL_TYPE = chn.channelType;
                    }
                    //获取操作员信息
                    if (null != GlobalEnvironment.LocalUserInfo)
                    {
                        recordInfo.OPERATOR_ID   = GlobalEnvironment.LocalUserInfo.USER_ID;
                        recordInfo.OPERATOR_NAME = GlobalEnvironment.LocalUserInfo.USER_NAME;
                    }
                }
            }
            recordInfo.INOUT_RECODE.VEHICLE_TYPE = (int)recordInfo.CarType;
            //车牌号码
            recordInfo.INOUT_RECODE.VEHICLE_NO = data.TempRecordInfo.plateNum;
            //车辆身份唯一标识
            recordInfo.INOUT_RECODE.UNIQUE_IDENTIFIER = data.TempRecordInfo.specialCode;
            //车牌颜色
            recordInfo.INOUT_RECODE.CAR_COLOR = data.TempRecordInfo.PlateColorStr.ToString();
            //入场类型
            recordInfo.PARK_TYPE = "车牌识别";
            //上报时间
            recordInfo.REPORTIMG_TIME = DateTime.Parse(data.TempRecordInfo.picCapTime);
            //抓拍图片
            recordInfo.PicFullName = data.TempRecordInfo.fullPicName;
            //初始化公共信息
            base.InitBaseInfo(recordInfo);

            return(recordInfo);
        }
Пример #14
0
 /// <summary>
 /// 车牌识别回调
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void MonitorControl_OnPlate(object sender, DataUploadEventArgs e)
 {
     ThreadMessageTransact.Instance.AddRecognitioMiddData(e);
 }