示例#1
0
    private void Update()
    {
        //左クリック
        if (Input.GetMouseButtonDown(0))
        {
            if (Physics.SphereCast(transform.position, _radius, _cameraTransform.forward, out _hit, _rayDistance, _layerMask))
            {
                _interfereObject = _hit.collider.gameObject.GetComponent <InterfereObject>();
                _interfereObject.ObjectAction();
            }
        }

        //右クリック(アイテム使用)
        if (Input.GetMouseButtonDown(1))
        {
            Physics.SphereCast(transform.position, _radius, _cameraTransform.forward, out _hit, _rayDistance, _layerMask);
            _itemManager.UseItem();
        }

        //マウスホイール(アイテム切り替え)
        _mouseWheel = Input.GetAxis("Mouse ScrollWheel");

        if (_mouseWheel > 0.0f)
        {
            _itemManager.ChangeItem(true);
        }

        if (_mouseWheel < 0.0f)
        {
            _itemManager.ChangeItem(false);
        }
    }
示例#2
0
        private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (e.ClickCount == 2)
            {
                DataGrid        datagrid  = sender as DataGrid;
                InterfereObject interfobj = datagrid.SelectedItem as InterfereObject;

                if (interfobj.Type == InterfereObjectEnum.设备)
                {
                    ActivityEquipmentInfo equ = new ActivityEquipmentInfo();
                    equ.GUID = interfobj.Guid;
                    PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA.FreqPlan.I_CO_IA_FreqPlan>(channel =>
                    {
                        equ = channel.GetEquipmentInfo(equ);
                        if (equ != null)
                        {
                            EquipmentDetailDialog dialog = new EquipmentDetailDialog(equ);
                            dialog.IsEnabled             = false;
                            dialog.WindowTitle           = "设备-详细信息";
                            dialog.ShowDialog(this);
                        }
                    });
                }
                else if (interfobj.Type == InterfereObjectEnum.周围台站)
                {
                    StationDetailDialog dialog = new StationDetailDialog(interfobj.Guid);
                    dialog.ShowDialog(this);
                }
            }
        }
示例#3
0
        private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (sender != null)
            {
                DataGridRow     gridrow   = sender as DataGridRow;
                InterfereObject interfobj = gridrow.Item as InterfereObject;
                if (interfobj != null)
                {
                    if (interfobj.Type == InterfereObjectEnum.设备)
                    {
                        ActivityEquipment equipment =
                            PT_BS_Service.Client.Framework.BeOperationInvoker.Invoke <I_CO_IA.FreqStation.I_CO_IA_FreqStation, ActivityEquipment>(channel =>
                        {
                            return(channel.GetActivityEquipment(interfobj.Guid));
                        });

                        EquipmentManageDialog equdialog = new EquipmentManageDialog();
                        equdialog.DataContext = equipment;
                        equdialog.AllowEdit   = false;
                        equdialog.ShowDialog();
                    }
                    else if (interfobj.Type == InterfereObjectEnum.周围台站)
                    {
                        StationDetailDialog dialog = new StationDetailDialog(interfobj.Guid);
                        dialog.ShowDialog(this);
                    }
                }
            }
        }
        /// <summary>
        /// 其他干扰信息
        /// </summary>
        /// <param name="Interfother"></param>
        /// <returns></returns>
        private InterfereObject CreateInterfObjectFromOther(ComparableFreq Interfother)
        {
            InterfereObject intobject = new InterfereObject();

            intobject.Guid = Interfother.FreqID;
            intobject.Name = "其他干扰";
            intobject.Type = InterfereObjectEnum.其他;
            intobject.Freq = Interfother.Freq;
            intobject.Band = Interfother.Band;
            return(intobject);
        }
        /// <summary>
        /// 取非法信号干扰信息
        /// </summary>
        /// <param name="illsignal"></param>
        /// <param name="freq"></param>
        /// <returns></returns>
        private InterfereObject CreateInterfObjectFromSignal(AnalysisResult illsignal, ComparableFreq freq)
        {
            InterfereObject intosignal = new InterfereObject();

            intosignal.Guid = illsignal.Id;
            intosignal.Name = illsignal.EquimentName;
            intosignal.Type = InterfereObjectEnum.非法信号;
            intosignal.Freq = freq.Freq;
            intosignal.Band = freq.Band;
            return(intosignal);
        }
        /// <summary>
        /// 取台站干扰信息
        /// </summary>
        /// <param name="Interfstation"></param>
        /// <returns></returns>
        private InterfereObject CreateInterfObjectFromStation(RoundStationInfo Interfstation, ComparableFreq freq)
        {
            InterfereObject intobject = new InterfereObject();

            intobject.Guid = Interfstation.STATGUID;
            intobject.Name = Interfstation.STAT_NAME;
            intobject.Type = InterfereObjectEnum.周围台站;
            intobject.Freq = freq.Freq;
            intobject.Band = freq.Band;
            return(intobject);
        }
        /// <summary>
        /// 取设备干扰信息
        /// </summary>
        /// <param name="Interfequ"></param>
        /// <returns></returns>
        private InterfereObject CreateInterfObjectFromEqu(ActivityEquipmentInfo Interfequ)
        {
            InterfereObject intobject = new InterfereObject();

            intobject.Guid = Interfequ.GUID;
            intobject.Name = Interfequ.Name;
            intobject.Type = InterfereObjectEnum.设备;
            intobject.Freq = Interfequ.SendFreq;
            intobject.Band = Interfequ.Band;

            return(intobject);
        }
        /// <summary>
        /// 获取发射机互调
        /// </summary>
        /// <param name="transmResult"></param>
        /// <returns></returns>
        private List <IMInterfereResult> GetTransmitterImResult(IMCompareResult transmResult)
        {
            List <IMInterfereResult> imInterfresultlst = new List <IMInterfereResult>();

            if (transmResult != null)
            {
                #region 获取干扰结果

                IMItemBase imBase = null;
                for (int i = 0; i < transmResult.Values.Length; i++)
                {
                    imBase = transmResult.Values[i];
                    ActivityEquipmentInfo equ = new ActivityEquipmentInfo();

                    ComparableFreq imfreq = imBase.IMFreqs[0];//发射互调的干扰频率存在IMFreqs中
                    equ = _equipments.FirstOrDefault(r => r.GUID == imfreq.FreqID);

                    bool isnewInterfere = true; //新的干扰,不存在dicIMInterfereResult字典中
                    if (equ != null)
                    {
                        if (this.dicIMInterfereResult.TryGetValue(equ, out imInterfresultlst))
                        {
                            isnewInterfere = false;
                        }
                        else
                        {
                            isnewInterfere    = true;
                            imInterfresultlst = new List <IMInterfereResult>();
                        }

                        IMInterfereResult iminterfinfo = new IMInterfereResult();
                        iminterfinfo.InterfType   = InterfereTypeEnum.发射机互调干扰;
                        iminterfinfo.InterfOrder  = GetIMInterfOrder(imBase.Order);
                        iminterfinfo.Formual      = imBase.Formula;
                        iminterfinfo.InterfObject = new List <InterfereObject>();


                        #region  获取干扰台站


                        ComparableFreq disfreq = imBase.DisturbedFreqs[0];

                        //先在设备列表中查找,如果有,则认为干扰物为设备
                        ActivityEquipmentInfo Interfequ1    = _equipments.FirstOrDefault(r => r.GUID == disfreq.FreqID);
                        InterfereObject       interfobject1 = null;
                        if (Interfequ1 != null)
                        {
                            interfobject1 = CreateInterfObjectFromEqu(Interfequ1);
                        }
                        else
                        {
                            //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                            RoundStationInfo Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == disfreq.FreqID);
                            if (Interfstation != null)
                            {
                                interfobject1 = CreateInterfObjectFromStation(Interfstation, disfreq);
                            }
                            else
                            {
                                //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                interfobject1 = CreateInterfObjectFromOther(imBase.DisturbedFreqs[0]);
                            }
                        }
                        iminterfinfo.InterfObject.Add(interfobject1);

                        //先在设备列表中查找,如果有,则认为干扰物为设备
                        ActivityEquipmentInfo Interfequ2    = _equipments.FirstOrDefault(r => r.GUID == imBase.IMFreqs[1].FreqID);
                        InterfereObject       interfobject2 = null;
                        if (Interfequ2 != null)
                        {
                            interfobject2 = CreateInterfObjectFromEqu(Interfequ2);
                        }
                        else
                        {
                            //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                            RoundStationInfo Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == imBase.IMFreqs[1].FreqID);
                            if (Interfstation != null)
                            {
                                interfobject2 = CreateInterfObjectFromStation(Interfstation, imBase.IMFreqs[1]);
                            }
                            else
                            {
                                //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                interfobject2 = CreateInterfObjectFromOther(imBase.IMFreqs[1]);
                            }
                        }
                        iminterfinfo.InterfObject.Add(interfobject2);

                        #endregion

                        imInterfresultlst.Add(iminterfinfo);

                        if (isnewInterfere)
                        {
                            this.dicIMInterfereResult.Add(equ, imInterfresultlst);
                        }
                    }
                }
                #endregion
            }
            return(imInterfresultlst);
        }
        /// <summary>
        /// 获取邻频干扰结果
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        private List <InterfereResult> GetADJFreqInterfResult(AdjFreqCompareResult[] result)
        {
            List <InterfereResult> adjinterfresultlst = new List <InterfereResult>();

            //干扰结果
            foreach (AdjFreqCompareResult item in result)
            {
                ActivityEquipmentInfo equ = new ActivityEquipmentInfo();
                equ = _equipments.FirstOrDefault(r => r.GUID == item.Keys[0].FreqID); //获取干扰设备

                bool isnewInterfere = true;                                           //新的干扰,不存在dicInterfereResult字典中
                if (this.dicInterfereResult.TryGetValue(equ, out adjinterfresultlst))
                {
                    isnewInterfere = false;
                }
                else
                {
                    isnewInterfere     = true;
                    adjinterfresultlst = new List <InterfereResult>();
                }

                #region  邻频干扰

                if (item.UpperAdjFreqs != null && item.UpperAdjFreqs.Length > 0)
                {
                    InterfereResult uadinterfInfo = new InterfereResult();
                    uadinterfInfo.InterfType   = InterfereTypeEnum.邻频干扰;
                    uadinterfInfo.InterfOrder  = InterfereOrderEnum.邻频;
                    uadinterfInfo.InterfObject = new List <InterfereObject>();
                    foreach (ComparableFreq uadjfreq in item.UpperAdjFreqs)
                    {
                        //先在设备列表中查找,如果有,则认为干扰物为设备
                        ActivityEquipmentInfo Interfequ    = _equipments.FirstOrDefault(r => r.GUID == uadjfreq.FreqID);
                        InterfereObject       interfobject = null;
                        if (Interfequ != null)
                        {
                            interfobject = CreateInterfObjectFromEqu(Interfequ);
                        }
                        else
                        {
                            //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                            RoundStationInfo Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == uadjfreq.FreqID);
                            if (Interfstation != null)
                            {
                                interfobject = CreateInterfObjectFromStation(Interfstation, uadjfreq);
                            }
                            else
                            {
                                AnalysisResult interfsignal = _illegalSignal.FirstOrDefault(r => r.Id == uadjfreq.FreqID);
                                if (interfsignal != null)
                                {
                                    interfobject = CreateInterfObjectFromSignal(interfsignal, uadjfreq);
                                }
                                else
                                {
                                    //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                    interfobject = CreateInterfObjectFromOther(uadjfreq);
                                }
                            }
                        }
                        uadinterfInfo.InterfObject.Add(interfobject);
                    }
                    adjinterfresultlst.Add(uadinterfInfo);
                }

                #endregion

                #region  邻频干扰

                if (item.LowerAdjFreqs != null && item.LowerAdjFreqs.Length > 0)
                {
                    InterfereResult ladjinterfInfo = new InterfereResult();
                    ladjinterfInfo.InterfType   = InterfereTypeEnum.邻频干扰;
                    ladjinterfInfo.InterfOrder  = InterfereOrderEnum.邻频;
                    ladjinterfInfo.InterfObject = new List <InterfereObject>();

                    foreach (ComparableFreq ladjfreq in item.LowerAdjFreqs)
                    {
                        //先在设备列表中查找,如果有,则认为干扰物为设备
                        ActivityEquipmentInfo Interfequ    = _equipments.FirstOrDefault(r => r.GUID == ladjfreq.FreqID);
                        InterfereObject       interfobject = null;
                        if (Interfequ != null)
                        {
                            interfobject = CreateInterfObjectFromEqu(Interfequ);
                        }
                        else
                        {
                            //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                            RoundStationInfo Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == ladjfreq.FreqID);
                            if (Interfstation != null)
                            {
                                interfobject = CreateInterfObjectFromStation(Interfstation, ladjfreq);
                            }
                            else
                            {
                                AnalysisResult interfsignal = _illegalSignal.FirstOrDefault(r => r.Id == ladjfreq.FreqID);
                                if (interfsignal != null)
                                {
                                    interfobject = CreateInterfObjectFromSignal(interfsignal, ladjfreq);
                                }
                                else
                                {
                                    //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                    interfobject = CreateInterfObjectFromOther(ladjfreq);
                                }
                            }
                        }
                        ladjinterfInfo.InterfObject.Add(interfobject);
                    }
                    adjinterfresultlst.Add(ladjinterfInfo);
                }
                #endregion

                if (isnewInterfere)
                {
                    this.dicInterfereResult.Add(equ, adjinterfresultlst);
                }
            }
            return(adjinterfresultlst);
        }
        /// <summary>
        /// 获取同频干扰结果
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        private List <InterfereResult> GetSameFreqInterfResult(SameFreqCompareResult[] result)
        {
            List <InterfereResult> interfresultlst = new List <InterfereResult>();;

            foreach (SameFreqCompareResult item in result)
            {
                ActivityEquipmentInfo equ = new ActivityEquipmentInfo();
                equ = _equipments.FirstOrDefault(r => r.GUID == item.Keys[0].FreqID);

                bool isnewInterfere = true; //新的干扰,不存在dicInterfereResult字典中
                if (this.dicInterfereResult.TryGetValue(equ, out interfresultlst))
                {
                    isnewInterfere = false;
                }
                else
                {
                    isnewInterfere  = true;
                    interfresultlst = new List <InterfereResult>();
                }
                InterfereResult sameinterfInfo = new InterfereResult();
                sameinterfInfo.InterfType   = InterfereTypeEnum.频干扰;
                sameinterfInfo.InterfOrder  = InterfereOrderEnum.频;
                sameinterfInfo.InterfObject = new List <InterfereObject>();

                #region 遍历干扰列表,取干扰设备或者干扰物

                foreach (ComparableFreq freq in item.Values)
                {
                    //先在设备列表中查找,如果有,则认为干扰物为设备
                    ActivityEquipmentInfo Interfequ    = _equipments.FirstOrDefault(r => r.GUID == freq.FreqID);
                    InterfereObject       interfobject = null;
                    if (Interfequ != null)
                    {
                        interfobject = CreateInterfObjectFromEqu(Interfequ);
                    }
                    else
                    {
                        //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                        RoundStationInfo Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == freq.FreqID);
                        if (Interfstation != null)
                        {
                            interfobject = CreateInterfObjectFromStation(Interfstation, freq);
                        }
                        else
                        {
                            AnalysisResult interfsignal = _illegalSignal.FirstOrDefault(r => r.Id == freq.FreqID);
                            if (interfsignal != null)
                            {
                                interfobject = CreateInterfObjectFromSignal(interfsignal, freq);
                            }
                            else
                            {
                                //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                interfobject = CreateInterfObjectFromOther(freq);
                            }
                        }
                    }
                    sameinterfInfo.InterfObject.Add(interfobject);
                }

                #endregion

                interfresultlst.Add(sameinterfInfo);
                //将新的干扰结果加到字典中
                if (isnewInterfere)
                {
                    this.dicInterfereResult.Add(equ, interfresultlst);
                }
            }
            return(interfresultlst);
        }
示例#11
0
        /// <summary>
        /// 获取接收机互调
        /// </summary>
        /// <param name="receiverResult"></param>
        /// <returns></returns>
        private List <IMInterfereResult> GetReceiverImResult(IMCompareResult receiverResult)
        {
            List <IMInterfereResult> imInterfresultlst = new List <IMInterfereResult>();

            if (receiverResult != null)
            {
                #region 获取干扰结果

                IMItemBase imBase = null;
                for (int i = 0; i < receiverResult.Values.Length; i++)
                {
                    imBase = receiverResult.Values[i];
                    ActivityEquipment equ     = new ActivityEquipment();
                    ComparableFreq    disfreq = imBase.DisturbedFreqs[0];
                    equ = _equipments.FirstOrDefault(r => r.Key == disfreq.FreqID);

                    bool isnewInterfere = true; //新的干扰,不存在dicIMInterfereResult字典中
                    if (equ != null)
                    {
                        if (this.dicIMInterfereResult.TryGetValue(equ, out imInterfresultlst))
                        {
                            isnewInterfere = false;
                        }
                        else
                        {
                            isnewInterfere    = true;
                            imInterfresultlst = new List <IMInterfereResult>();
                        }

                        IMInterfereResult iminterfinfo = new IMInterfereResult();
                        iminterfinfo.InterfType   = InterfereTypeEnum.接收机互调干扰;
                        iminterfinfo.InterfOrder  = GetIMInterfOrder(imBase.Order);
                        iminterfinfo.Formual      = imBase.Formula;
                        iminterfinfo.InterfObject = new List <InterfereObject>();


                        #region  获取干扰台站

                        for (int k = 0; k < imBase.IMFreqs.Length; k++)
                        {
                            ComparableFreq freq = imBase.IMFreqs[k];

                            //先在设备列表中查找,如果有,则认为干扰物为设备
                            ActivityEquipment Interfequ    = _equipments.FirstOrDefault(r => r.Key == freq.FreqID);
                            InterfereObject   interfobject = null;
                            if (Interfequ != null)
                            {
                                interfobject      = CreateInterfObjectFromEqu(Interfequ);
                                interfobject.Freq = freq.Freq; //干扰频率有可能是备用频率
                            }
                            else
                            {
                                //如设备列表中没有,则在周围台站列表中查找,如果有,则认为干扰物为设备
                                ActivitySurroundStation Interfstation = _aroundStation.FirstOrDefault(r => r.STATGUID == freq.FreqID);
                                if (Interfstation != null)
                                {
                                    interfobject = CreateInterfObjectFromStation(Interfstation, freq);
                                }
                                else
                                {
                                    //如设备列表和周围台站列表中都没有此干扰物,则认为干扰物为其他(这种情况应该不会出现??)
                                    interfobject = CreateInterfObjectFromOther(freq);
                                }
                            }
                            iminterfinfo.InterfObject.Add(interfobject);
                        }

                        #endregion

                        imInterfresultlst.Add(iminterfinfo);

                        if (isnewInterfere)
                        {
                            this.dicIMInterfereResult.Add(equ, imInterfresultlst);
                        }
                    }
                }
                #endregion
            }

            return(imInterfresultlst);
        }