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); } }
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); } }
/// <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); } } }
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 }
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(); } } }
/// <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); }
/// <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); }