Ejemplo n.º 1
0
        private void Time_Sweep_1()
        {
            bool bQuit   = false;
            bool bErrors = false;

            //开启功放
            bErrors = RF_Do(exe_params.DevInfo.RF_Addr1,
                            exe_params.RFPriority,
                            exe_params.TmeParam.P1, exe_params.TmeParam.F1,
                            true, false, true, true, ref rfStatus_1);


            //检查功放异常现象,包括功放通信超时
            bErrors = CheckRF_1(bErrors);

            if (bErrors)
            {
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr1, 0);
                return;
            }

            //设置频谱分析的参数对象
            //RBW,ATT,Unit, Continued,由外部设置
            exe_params.SpeParam.StartFreq = exe_params.TmeParam.Rx - 0.15; //MHz
            exe_params.SpeParam.EndFreq   = exe_params.TmeParam.Rx + 0.15; //MHz

            //启动隔离度扫时进程
            for (int I = 0; I < exe_params.TmeParam.N; I++)
            {
                Monitor.Enter(ctrl);
                bQuit = ctrl.Quit;
                Monitor.Exit(ctrl);

                if (bQuit)
                {
                    break;
                }

                //采样查询,获取功放当前状态
                bErrors = RF_Do(exe_params.DevInfo.RF_Addr1,
                                exe_params.RFPriority,
                                exe_params.TmeParam.P1, exe_params.TmeParam.F1,
                                false, true, false, false, ref rfStatus_1);

                //检查功放异常现象,包括功放通信超时
                bErrors = CheckRF_1(bErrors);
                if (bErrors)
                {
                    NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr1, 0);
                    break;
                }

                //启动频谱分析,并等待分析完成,
                //在接收频谱数据函数中,计算分析结果值
                //在模块窗体的消息函数中检查频谱异常
                ISpectrumObj.StartAnalysis(exe_params.SpeParam);

                //向WndHandle发送消息,告知完成一个点的分析
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.ISO_SUCCED, (uint)exe_params.DevInfo.RF_Addr1, 0);
            }
        }
Ejemplo n.º 2
0
        private void Freq_Sweep_2()
        {
            bool bQuit   = false;
            bool bErrors = false;

            float f  = exe_params.FrqParam.Items2[0].Tx2;
            float p  = exe_params.FrqParam.Items2[0].P2;
            float rx = 0;

            //开启功放
            bErrors = RF_Do(exe_params.DevInfo.RF_Addr2,
                            exe_params.RFPriority,
                            p, f,
                            true, false, true, true, ref rfStatus_2);

            //检查功放异常现象,包括功放通信超时
            bErrors = CheckRF_2(bErrors);

            if (bErrors)
            {
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                return;
            }

            //启动隔离度扫时进程
            for (int I = 0; I < exe_params.FrqParam.Items2.Length; I++)
            {
                Monitor.Enter(ctrl);
                bQuit = ctrl.Quit;
                Monitor.Exit(ctrl);

                if (bQuit)
                {
                    break;
                }

                f = exe_params.FrqParam.Items2[I].Tx2;
                p = exe_params.FrqParam.Items2[I].P2;

                //采样查询,获取功放当前状态
                bErrors = RF_Do(exe_params.DevInfo.RF_Addr2,
                                exe_params.RFPriority,
                                p, f,
                                false, true, true, true, ref rfStatus_2);

                //检查功放异常现象,包括功放通信超时
                bErrors = CheckRF_2(bErrors);
                if (bErrors)
                {
                    NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                    break;
                }

                //设置频谱分析的参数对象
                //RBW,ATT,Unit, Continued,由外部设置
                rx = exe_params.FrqParam.Items2[I].Rx;

                exe_params.SpeParam.StartFreq = rx - 0.15; //MHz
                exe_params.SpeParam.EndFreq   = rx + 0.15; //MHz

                //启动频谱分析,并等待分析完成,
                //在接收频谱数据函数中,计算分析结果值
                //在模块窗体的消息函数中检查频谱异常
                ISpectrumObj.StartAnalysis(exe_params.SpeParam);

                //向WndHandle发送消息,告知完成一个点的分析
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.ISO_SUCCED, (uint)exe_params.DevInfo.RF_Addr2, 0);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 启动功放测试
        /// </summary>
        /// <param name="Num">功放编号</param>
        private void StartRF(object RF)
        {
            RFInvolved Num;

            Num = (RFInvolved)RF;
            bool bErrors = false;

            if (Num == RFInvolved.Rf_1)
            {
                bErrors = RF_Set(exe_params.DevInfo.RF_Addr1,
                                 exe_params.RFPriority,
                                 exe_params.TmeParam.P1, exe_params.TmeParam.F1,
                                 true, false, true, true);

                //if(bErrors)
                //    NativeMessage.PostMessage(_handle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr1, 0);

                for (int i = 0; i < 60; i++)
                {
                    bErrors |= RF_Sample(exe_params.DevInfo.RF_Addr1,
                                         exe_params.RFPriority,
                                         ref rfStatus_1);

                    //检查功放异常现象,包括功放通信超时
                    bErrors = CheckRF_1(bErrors);
                    if (bErrors)
                    {
                        NativeMessage.PostMessage(_handle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr1, 0);
                        return;
                    }

                    Thread.Sleep(1000);
                }
            }
            else
            {
                bErrors = RF_Set(exe_params.DevInfo.RF_Addr2,
                                 exe_params.RFPriority,
                                 exe_params.TmeParam.P2, exe_params.TmeParam.F2,
                                 true, false, true, true);

                //if (bErrors)
                //    NativeMessage.PostMessage(_handle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);

                for (int i = 0; i < 60; i++)
                {
                    bErrors |= RF_Sample(exe_params.DevInfo.RF_Addr2,
                                         exe_params.RFPriority,
                                         ref rfStatus_2);

                    //检查功放异常现象,包括功放通信超时
                    bErrors = CheckRF_2(bErrors);
                    if (bErrors)
                    {
                        NativeMessage.PostMessage(_handle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                        return;
                    }

                    Thread.Sleep(1000);
                }
            }
        }
Ejemplo n.º 4
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            bool  running = false;
            Mutex mt      = new Mutex(true, "jcPimSoftware", out running);

            //获取程序执行路径
            string exePath = Application.StartupPath;

            //加载全局配置文件
            App_Configure.NewConfigure(exePath + "\\Configures.ini");
            App_Configure.Cnfgs.LoadSettings();

            //判断授权文件
            Code c = new Code();

            try
            {
                if (File.Exists(Code.strFilePath))
                {
                    if (!c.CheckFile(App_Configure.Cnfgs.SN.ToLower()))
                    {
                        running = false;
                        MessageBox.Show("授权日期已到!");
                    }
                }
                else
                {
                    running = false;
                    MessageBox.Show("请先生成授权文件!");
                }
            }
            catch
            {
                running = false;
                MessageBox.Show("授权文件缺失或错误,请重新生成授权文件!");
            }

            if (running)
            {
                sf = new StartForm("Initializing......\r\n");
                Thread t = new Thread(new ThreadStart(Show));
                t.IsBackground = true;
                t.Start();
                try
                {
                    //ygq
                    string s = Copy(Application.StartupPath + "\\settings", "D:\\settings");
                    //



                    #region 加载主配置文件,获取配置文件相对路径
                    //获取程序执行路径
                    //string exePath = Application.StartupPath;

                    //加载全局配置文件
                    //App_Configure.NewConfigure(exePath + "\\Configures.ini");
                    //App_Configure.Cnfgs.LoadSettings();


                    //获取配置文件夹路径
                    string setPath = App_Configure.Cnfgs.Path_Def;
                    #endregion

                    #region 建立功放补偿表格文件对象,并加载数据
                    //TX补偿文件
                    if (App_Configure.Cnfgs.Ms_switch_port_count <= 0)
                    {
                        //Tx_Tables.NewTables(exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_rev.ini",
                        //                    exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_disp_rev.ini"
                        //                  );


                        if (App_Configure.Cnfgs.Mode >= 2)
                        {
                            Tx_Tables.NewTables(exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_rev.ini",
                                                exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_disp_rev.ini",
                                                exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_rev2.ini",
                                                exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_disp_rev2.ini"
                                                );

                            Tx_Tables.LoadTables();

                            //RX补偿文件
                            string path1 = exePath + "\\" + setPath + "\\RX_Tables";
                            //string[] rx_tables_names = { path1 + "\\pim_rev.txt", path1 + "\\pim_frd.txt" };
                            string[] rx_tables_names = { path1 + "\\pim_rev.txt",  path1 + "\\pim_frd.txt",
                                                         path1 + "\\pim_rev2.txt", path1 + "\\pim_frd2.txt" };
                            Rx_Tables.NewTables(rx_tables_names);

                            Rx_Tables.LoadTables();
                        }

                        else
                        {
                            Tx_Tables.NewTables(exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_rev.ini",
                                                exePath + "\\" + setPath + "\\Tx_Tables\\signal_tx_disp_rev.ini"
                                                );

                            Tx_Tables.LoadTables2();

                            //RX补偿文件
                            string   path1           = exePath + "\\" + setPath + "\\RX_Tables";
                            string[] rx_tables_names = { path1 + "\\pim_rev.txt", path1 + "\\pim_frd.txt" };

                            Rx_Tables.NewTables(rx_tables_names);

                            Rx_Tables.LoadTables();
                        }
                    }
                    else
                    {
                        bool com_client = MsSwithc.ClientCom();
                        //mSwitch = new MotorSwitch();
                        //bool com_client = mSwitch.Connect("192.168.1.178", 4001);
                        if (com_client)
                        {
                            sf.GetInfoMation("Load switch successfully!");
                        }
                        else
                        {
                            sf.GetInfoMation("Load switch failed!");
                        }
                        offset = new Offset(App_Configure.Cnfgs.Ms_switch_port_count);
                        int a = int.Parse(IniFile.GetString("cnfgs", "xuhao", "0", exePath + "\\Configures.ini"));
                        offset.LoadingRX();
                        offset.LoadingTX();
                        offset.GetTX(a);
                        offset.GetRX(a);
                    }
                    //建立补偿系数文件对象,并加载文件
                    App_Factors.NewFactors(exePath + "\\" + setPath + "\\Offsets_Tx.ini",
                                           exePath + "\\" + setPath + "\\Offsets_Tx_Disp.ini",
                                           exePath + "\\" + setPath + "\\Offsets_Rx.ini");
                    App_Factors.LoadFactros();

                    #endregion

                    #region 建立频谱补偿表格文件对象,并加载数据
                    //频谱补偿文件
                    string   path2            = exePath + "\\" + setPath + "\\Spectrum_Tables";
                    string[] spc_tables_names = { path2 + "\\Ch1_4KHz.txt", path2 + "\\Ch1_20KHz.txt", path2 + "\\Ch1_100KHz.txt", path2 + "\\Ch1_1000KHz.txt",
                                                  path2 + "\\Ch2_4KHz.txt", path2 + "\\Ch2_20KHz.txt", path2 + "\\Ch2_100KHz.txt", path2 + "\\Ch2_1000KHz.txt" };

                    Spectrum_Tables.NewTables(spc_tables_names);
                    #endregion ;

                    #region 建立RLO校准文件对象,并加载数据
                    //string path4 = exePath + "\\" + setPath + "\\RL0_Tables";
                    //string[] rl0_tables_names = {path4 + "\\iso_tx1.txt", path4 + "\\iso_tx2.txt",
                    //                         path4 + "\\vsw_tx1.txt", path4 + "\\vsw_tx2.txt",
                    //                         path4 + "\\har_tx1.txt", path4 + "\\har_tx2.txt"};

                    //RL0_Tables.NewTables(rl0_tables_names);
                    //RL0_Tables.LoadTables();
                    #endregion

                    #region 建立默认模块配置信息对象,并加载数据
                    //默认模块配置文件
                    string   path3          = "D:\\" + setPath;
                    string[] settings_names = { path3 + "\\Settings_Sgn.ini", path3 + "\\Settings_Pim.ini",
                                                path3 + "\\Settings_Spc.ini",
                                                path3 + "\\Specifics.ini" };

                    App_Settings.NewSettings(settings_names);
                    App_Settings.LoadSettings();
                    #endregion

                    #region 加载皮肤资源
                    FileInfo f    = new FileInfo(exePath + "\\" + App_Configure.Cnfgs.Skin_pack_path);
                    string   name = f.Name.Substring(0, f.Name.LastIndexOf("."));
                    ImagesManage.LoadImageDLL(name);
                    #endregion

                    #region 加载语言包资源

                    #endregion


                    //建立报告文件夹结构
                    App_Configure.CreateReportFolder();

                    //建立用户配置文件夹结构
                    App_Configure.CreateUsrSettingFolder();

                    sf.GetInfoMation("Load default configuration successfully!");
                }
                catch
                {
                    sf.GetInfoMation("Load default configuration failed!");
                }
                NativeMessage.PostMessage(handel, MessageID.SF_WAIT, 0, 0);
                #region 建立程序主窗体
                frmMain = new MainForm();
                NativeMessage.PostMessage(handel, MessageID.SF_CONTINUTE, 0, 0);
                #endregion

                #region 建立射频功放层
                RFSignal.InitRFSignal(frmMain.Handle);
                bool flag      = false;
                int  adrr1     = App_Configure.Cnfgs.ComAddr1;
                int  adrr2     = App_Configure.Cnfgs.ComAddr2;
                int  rfClass   = App_Configure.Cnfgs.RFClass;
                int  rFFormula = App_Configure.Cnfgs.RFFormula;

                flag = RFSignal.NewRFSignal(adrr1, rfClass, rFFormula);
                if (flag)
                {
                    sf.GetInfoMation("Serial " + adrr1.ToString() + " initialized successfully!");
                    sf.status = sf.status & 1;
                }
                else
                {
                    sf.GetInfoMation("Serial " + adrr1.ToString() + " initialized failed!");
                    sf.status = sf.status & 0;
                }
                flag = RFSignal.NewRFSignal(adrr2, rfClass, rFFormula);

                if (flag)
                {
                    sf.GetInfoMation("Serial " + adrr2.ToString() + " initialized successfully!");
                    sf.status = sf.status & 1;
                }
                else
                {
                    sf.GetInfoMation("Serial " + adrr2.ToString() + " initialized failed!");
                    sf.status = sf.status & 0;
                }
                RFSignal.RFOff(adrr1, 2);
                RFSignal.RFOff(adrr2, 2);

                #endregion
                NativeMessage.PostMessage(handel, MessageID.SF_WAIT, 0, 0);
                #region WINIO、GPIO初始化操作

                flag = GPIO.InitWinIo();

                if (!flag)
                {
                    Thread.Sleep(300);
                    flag = GPIO.InitWinIo();
                }

                if (flag)
                {
                    sf.GetInfoMation("WINIO initialized successfully!");
                    sf.status = sf.status & 1;
                }
                else
                {
                    // Log.WriteLog("winIO初始化失败!", Log.EFunctionType.TestMode);
                    sf.GetInfoMation("WINIO initialized failed!");
                    sf.status = sf.status & 0;
                }
                sf.Complete = true;
                //GPIO.Narrowband();
                NativeMessage.PostMessage(handel, MessageID.SF_CONTINUTE, 0, 0);
                #endregion

                #region 判断Bird频谱仪状态

                if (App_Configure.Cnfgs.Spectrum == 1)
                {
                    FunTimeout                   tf           = new FunTimeout();
                    SpectrumLib.ISpectrum        ISpectrumObj = new SpectrumLib.Spectrums.BirdSh(handel, MessageID.SPECTRUEME_SUCCED, MessageID.SPECTRUM_ERROR);
                    SpectrumLib.Models.ScanModel model        = new SpectrumLib.Models.ScanModel();
                    sf.ISpectrumObj = ISpectrumObj;
                    if (ISpectrumObj.ConnectSpectrum() != 1)
                    {
                        GPIO.SetHigh();
                        Thread.Sleep(1000);
                        GPIO.SetLow();
                        ISpectrumObj.ResetStatus();
                        sf.GetInfoMation("Bird connect failed!");
                        Log.WriteLog("Bird connect failed!", Log.EFunctionType.SPECTRUM);
                    }
                    model.StartFreq = 900;
                    model.EndFreq   = 900.5;
                    model.Att       = 0;
                    model.Rbw       = 10 * 1000;
                    model.Vbw       = 3 * 1000;
                    model.Continued = false;
                    model.Unit      = SpectrumLib.Defines.CommonDef.EFreqUnit.MHz;

                    tf.obj = model;
                    tf.Do  = ISpectrumObj.StartAnalysis;
                    if (tf.DoWithTimeout(new TimeSpan(0, 0, 0, 1)))
                    {
                        GPIO.SetHigh();
                        Thread.Sleep(1000);
                        GPIO.SetLow();
                        ISpectrumObj.ResetStatus();
                        Log.WriteLog("Bird get data failed!", Log.EFunctionType.SPECTRUM);
                    }
                }

                #endregion

                #region 判断Deli频谱仪状态

                if (App_Configure.Cnfgs.Spectrum == 2)
                {
                    try
                    {
                        SpectrumLib.ISpectrum        ISpectrumObj = new SpectrumLib.Spectrums.Deli(handel, MessageID.SPECTRUEME_SUCCED, MessageID.SPECTRUM_ERROR);
                        SpectrumLib.Models.ScanModel model        = new SpectrumLib.Models.ScanModel();
                        sf.ISpectrumObj = ISpectrumObj;
                        if (ISpectrumObj.ConnectSpectrum() != 1)
                        {
                            ISpectrumObj.ResetStatus();
                            sf.GetInfoMation("Deli spectrum connect failed !");
                            Log.WriteLog("Deli spectrum connect failed!", Log.EFunctionType.SPECTRUM);
                        }
                        else
                        {
                            object o;
                            model.StartFreq         = App_Settings.pim.F1;
                            model.EndFreq           = model.StartFreq + 2 * App_Settings.pim.Scanband;
                            model.Unit              = SpectrumLib.Defines.CommonDef.EFreqUnit.MHz;
                            model.Att               = App_Settings.pim.Att_Spc;
                            model.Rbw               = App_Settings.pim.Rbw_Spc;
                            model.Vbw               = App_Settings.pim.Vbw_Spc;
                            model.Deli_averagecount = 6;
                            model.Deli_detector     = "AVERage";//检波方式
                            model.Deli_ref          = -50;
                            model.Deli_refoffset    = 0;
                            model.Deli_specing      = "LOGarithmic";
                            model.Deli_sweepmode    = "PERFormance"; //扫描模式
                            model.Deli_source       = "FREERUN";     //触发方式
                            model.Deli_scale        = 10;            //单位/格
                            model.Deli_startspe     = 0;             //频谱仪是否第一次启动
                            model.Deli_isSpectrum   = true;          //频谱模式

                            o = model;
                            if (!ISpectrumObj.Setting(o))
                            {
                                Thread.Sleep(1000);
                                ISpectrumObj.ResetStatus();
                                sf.GetInfoMation("Deli spectrum set failed !");
                                Log.WriteLog("Deli spectrum set failed!", Log.EFunctionType.SPECTRUM);
                            }
                        }
                    }
                    catch
                    {
                        sf.GetInfoMation("Deli spectrum connect failed !");
                        Log.WriteLog("Deli connect failed!", Log.EFunctionType.SPECTRUM);
                    }
                }
                #endregion

                #region 判断FanShuang收信机状态

                if (App_Configure.Cnfgs.Spectrum == SpectrumType.FanShuang)
                {
                    FunTimeout                   tf           = new FunTimeout();
                    SpectrumLib.ISpectrum        ISpectrumObj = new SpectrumLib.Spectrums.FanShuang(handel, MessageID.SPECTRUEME_SUCCED, MessageID.SPECTRUM_ERROR);
                    SpectrumLib.Models.ScanModel model        = new SpectrumLib.Models.ScanModel();
                    sf.ISpectrumObj = ISpectrumObj;
                    if (ISpectrumObj.ConnectSpectrum() != 1)
                    {
                        GPIO.SetHigh();
                        Thread.Sleep(1000);
                        GPIO.SetLow();
                        ISpectrumObj.ResetStatus();
                        sf.GetInfoMation("FanShaung connect failed!");
                        Log.WriteLog("FanShaung connect failed!", Log.EFunctionType.SPECTRUM);
                    }
                }

                #endregion

                mre.WaitOne();

                #region 启动程序

                Application.Run(frmMain);
                mt.ReleaseMutex();
            }
            else
            {
                Application.Exit();
            }
            #endregion

            #region 释放资源
            RFSignal.FinaRFSignal();
            #endregion
        }
Ejemplo n.º 5
0
        void ReciveMes(object o)
        {
            string str  = "";
            Socket sock = o as Socket;

            try
            {
                while (true)
                {
                    byte[] buffer = new byte[1024];
                    int    r      = sock.Receive(buffer);
                    if (r != 0)
                    {
                        str = Encoding.UTF8.GetString(buffer, 0, r);
                        string[] s = str.Split(':');
                        switch (s[0])
                        {
                        case "@9":
                            try
                            {
                                if (s.Length == 7)
                                {
                                    if (Convert.ToSingle(s[1]) < App_Settings.sgn_1.Min_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_1.Min_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[1]) > App_Settings.sgn_1.Max_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_1.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) < App_Settings.sgn_2.Min_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_2.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) > App_Settings.sgn_2.Max_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_2.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) < App_Settings.sgn_2.Min_Power)
                                    {
                                        s[3] = (App_Settings.sgn_2.Min_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) > App_Settings.sgn_2.Max_Power)
                                    {
                                        s[3] = (App_Settings.sgn_2.Max_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[4]) < 0 || Convert.ToSingle(s[4]) > (Convert.ToSingle(s[2]) - Convert.ToSingle(s[1])))
                                    {
                                        s[4] = "0.1";
                                    }
                                    if (Convert.ToSingle(s[5]) < 0 || Convert.ToSingle(s[5]) > (Convert.ToSingle(s[2]) - Convert.ToSingle(s[1])))
                                    {
                                        s[5] = "0.1";
                                    }
                                    _fs    = Convert.ToDecimal(s[1]);
                                    _fe    = Convert.ToDecimal(s[2]);
                                    _pow   = Convert.ToDecimal(s[3]);
                                    _step1 = Convert.ToDecimal(s[4]);
                                    _step2 = Convert.ToDecimal(s[5]);
                                    _time  = Convert.ToDecimal(s[6]);
                                    NativeMessage.PostMessage(i, MessageID.Start_F1F2_, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@2":
                            try
                            {
                                if (s.Length == 5)
                                {
                                    if (Convert.ToSingle(s[1]) < App_Settings.sgn_2.Min_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_2.Min_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[1]) > App_Settings.sgn_2.Max_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_2.Min_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) < App_Settings.sgn_2.Min_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_2.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) > App_Settings.sgn_2.Max_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_2.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) < App_Settings.sgn_2.Min_Power)
                                    {
                                        s[3] = (App_Settings.sgn_2.Min_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) > App_Settings.sgn_2.Max_Power)
                                    {
                                        s[3] = (App_Settings.sgn_2.Max_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[4]) < 0 || Convert.ToSingle(s[4]) > (Convert.ToSingle(s[2]) - Convert.ToSingle(s[1])))
                                    {
                                        s[4] = "0.1";
                                    }
                                    f1   = Convert.ToDecimal(s[1]);
                                    f2   = Convert.ToDecimal(s[2]);
                                    pow  = Convert.ToDecimal(s[3]);
                                    step = Convert.ToDecimal(s[4]);
                                    NativeMessage.PostMessage(i, MessageID.Setfps_, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@1":
                            try
                            {
                                if (s.Length == 5)
                                {
                                    if (Convert.ToSingle(s[1]) < App_Settings.sgn_1.Min_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_1.Min_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[1]) > App_Settings.sgn_1.Max_Freq)
                                    {
                                        s[1] = (App_Settings.sgn_1.Min_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) < App_Settings.sgn_1.Min_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_1.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[2]) > App_Settings.sgn_1.Max_Freq)
                                    {
                                        s[2] = (App_Settings.sgn_1.Max_Freq).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) < App_Settings.sgn_1.Min_Power)
                                    {
                                        s[3] = (App_Settings.sgn_1.Min_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[3]) > App_Settings.sgn_1.Max_Power)
                                    {
                                        s[3] = (App_Settings.sgn_1.Max_Power).ToString();
                                    }
                                    if (Convert.ToSingle(s[4]) < 0 || Convert.ToSingle(s[4]) > (Convert.ToSingle(s[2]) - Convert.ToSingle(s[1])))
                                    {
                                        s[4] = "0.1";
                                    }
                                    f1_   = Convert.ToDecimal(s[1]);
                                    f2_   = Convert.ToDecimal(s[2]);
                                    pow_  = Convert.ToDecimal(s[3]);
                                    step_ = Convert.ToDecimal(s[4]);

                                    NativeMessage.PostMessage(i, MessageID.Setfps_2, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@3":
                            try
                            {
                                if (s.Length == 2 && s[1] == "0")
                                {
                                    NativeMessage.PostMessage(i, MessageID.Start__, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@4":
                            try
                            {
                                if (s.Length == 2 && s[1] == "0")
                                {
                                    NativeMessage.PostMessage(i, MessageID.Mode_, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@5":
                            try
                            {
                                if (s.Length == 2 && s[1] == "3" || s[1] == "5" || s[1] == "7" || s[1] == "9")
                                {
                                    NativeMessage.PostMessage(i, MessageID.Order__, 0, Convert.ToInt32(s[1]));
                                }
                                else
                                {
                                    NativeMessage.PostMessage(i, MessageID.Error_, 1, 1);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@6":
                            try
                            {
                                if (s.Length == 2 && s[1] == "1" || s[1] == "2")
                                {
                                    NativeMessage.PostMessage(i, MessageID.FWE_, 0, Convert.ToInt32(s[1]));
                                }
                                else
                                {
                                    NativeMessage.PostMessage(i, MessageID.Error_, 1, 1);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@7":
                            try
                            {
                                if (s.Length == 2 && s[1] == "0")
                                {
                                    NativeMessage.PostMessage(i, MessageID.Unit_, 0, 0);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        case "@8":
                            try
                            {
                                if (s.Length == 2 && s[1] == "0")
                                {
                                    dicMe[ippoint].Close();
                                    dicMe.Remove(ippoint);
                                }
                            }
                            catch
                            {
                                NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            }
                            break;

                        default:
                            NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                            break;
                        }
                    }
                    else
                    {
                        NativeMessage.PostMessage(i, MessageID.Error_, 1, 0);
                    }
                }
            }
            catch
            {
                if (dicMe.Count != 0)
                {
                    dicMe[ippoint].Close();
                    dicMe.Clear();
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 功放二扫频
        /// </summary>
        private void VSWR_Freq_Sweep_2(FreqSweepItem[] item, float BandWidth)
        {
            bool bQuit    = false;
            bool bErrors2 = false;

            //开启功放
            bErrors2 = RF_Do(exe_params.DevInfo.RF_Addr2,
                             exe_params.RFPriority,
                             item[0].P2, item[0].Tx2,
                             true, false, true, true, ref rfStatus_2);

            //检查功放异常现象,包括功放通信超时
            bErrors2 = CheckRF_2(bErrors2);

            if (bErrors2)
            {
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                return;
            }

            for (int i = 0; i < item.Length; i++)
            {
                Monitor.Enter(ctrl);
                bQuit = ctrl.Quit;
                Monitor.Exit(ctrl);

                if (bQuit)
                {
                    break;
                }

                //设置功放2频率、功率
                bErrors2 = RF_Do(exe_params.DevInfo.RF_Addr2,
                                 exe_params.RFPriority,
                                 item[i].P2, item[i].Tx2,
                                 false, true, true, true, ref rfStatus_2);

                //检查功放异常现象,包括功放通信超时
                bErrors2 = CheckRF_2(bErrors2);

                if (bErrors2)
                {
                    NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                    break;
                }

                //设置频谱分析的参数对象
                //RBW,ATT,Unit, Continued,由外部设置
                exe_params.SpeParam.StartFreq = item[i].Rx - BandWidth; //MHz
                exe_params.SpeParam.EndFreq   = item[i].Rx + BandWidth; //MHz

                //启动频谱分析
                ISpectrumObj.StartAnalysis(exe_params.SpeParam);

                //封装扫描结果
                CurrentResultObj.Pstatus = rfStatus_2;
                CurrentResultObj.Sstatus = sweepValue;

                //向WndHandle发送消息,告知完成一个点的分析
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.VSW_SUCCED, 0, i);
            }

            ////向WndHandle发送消息,告知完成上所有的分析
            //NativeMessage.PostMessage(exe_params.WndHandle, MessageID.VSW_SWEEP_DONE, 0, 0);

            //关闭功放2
            RF_Do(exe_params.DevInfo.RF_Addr2,
                  exe_params.RFPriority,
                  item[0].P2, item[0].Tx2,
                  false, false, false, false, ref rfStatus_2);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 功放二点频
        /// </summary>
        /// <param name="BandWidth"></param>
        private void VSWR_Time_Sweep_2(float BandWidth)
        {
            bool bQuit   = false;
            bool bErrors = false;

            //开启功放
            bErrors = RF_Do(exe_params.DevInfo.RF_Addr2,
                            exe_params.RFPriority,
                            exe_params.TmeParam.P2, exe_params.TmeParam.F2,
                            true, false, true, true, ref rfStatus_2);

            bErrors = CheckRF_2(bErrors);

            //检查功放异常现象,包括功放通信超时
            if (bErrors)
            {
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                return;
            }

            //设置频谱分析的参数对象
            //RBW,ATT,Unit, Continued,由外部设置
            exe_params.SpeParam.StartFreq = exe_params.TmeParam.Rx - BandWidth; //MHz
            exe_params.SpeParam.EndFreq   = exe_params.TmeParam.Rx + BandWidth; //MHz

            //启动驻波比扫时进程
            for (int i = 0; i < exe_params.TmeParam.N; i++)
            {
                Monitor.Enter(ctrl);
                bQuit = ctrl.Quit;
                Monitor.Exit(ctrl);

                if (bQuit)
                {
                    break;
                }

                //采样查询,获取功放当前状态
                bErrors = RF_Do(exe_params.DevInfo.RF_Addr2,
                                exe_params.RFPriority,
                                exe_params.TmeParam.P2, exe_params.TmeParam.F2,
                                false, true, false, false, ref rfStatus_2);
                //检查功放异常现象,包括功放通信超时
                bErrors = CheckRF_2(bErrors);
                if (bErrors)
                {
                    NativeMessage.PostMessage(exe_params.WndHandle, MessageID.RF_ERROR, (uint)exe_params.DevInfo.RF_Addr2, 0);
                    break;
                }

                //启动频谱分析
                ISpectrumObj.StartAnalysis(exe_params.SpeParam);

                //封装扫描结果
                CurrentResultObj.Pstatus = rfStatus_2;
                CurrentResultObj.Sstatus = sweepValue;

                //向WndHandle发送消息,告知完成一个点的分析
                NativeMessage.PostMessage(exe_params.WndHandle, MessageID.VSW_SUCCED, 0, i);
            }

            ////向WndHandle发送消息,告知完成上所有的分析
            //NativeMessage.PostMessage(exe_params.WndHandle, MessageID.VSW_SWEEP_DONE, 0, 0);

            //关闭功放
            RF_Do(exe_params.DevInfo.RF_Addr2,
                  exe_params.RFPriority,
                  exe_params.TmeParam.P2, exe_params.TmeParam.F2,
                  false, false, false, false, ref rfStatus_2);
        }