private bool Verify_Signal(formattinfo _fi, ModemTelnet ModemTelnet, Instrument instrument, string Mode, string MCS, string BW, string Channel_Freq, string Anten) { try { autoattenuator _at = new autoattenuator() { Anten = Anten, Frequency = Channel_Freq.Substring(0, 4), Channel = Master.getChannel(Channel_Freq.Substring(0, 4)), PowerMaster = Master.getPower(Channel_Freq.Substring(0, 4), Anten) }; string Result_Measure_temp = ""; decimal Pwr_measure_temp = 0; string _wifi = ""; string standard_2G_5G = int.Parse(Channel_Freq.Substring(0, 4)) < 3000 ? "2G" : "5G"; switch (Mode) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", BW == "0" ? "20" : "40"); break; } case "4": { switch (BW) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } //Thiết lập tần số máy đo string _error = ""; instrument.config_Instrument_Channel(Channel_Freq, ref _error); decimal value = 0; for (int i = 0; i < 2; i++) { RE: //Gửi lệnh yêu cầu ONT phát WIFI TX string _message = ""; ModemTelnet.Verify_Signal_SendCommand(standard_2G_5G, Mode, MCS, BW, Channel_Freq, Anten, ref _message); //Đọc kết quả từ máy đo Result_Measure_temp = instrument.config_Instrument_get_TotalResult("RFB", _wifi); //Lấy dữ liệu Power try { value = Decimal.Parse(Result_Measure_temp.Split(',')[19], System.Globalization.NumberStyles.Float); if (Pwr_measure_temp < value) { Pwr_measure_temp = value; } } catch { goto RE; } } _at.measuredPower = Pwr_measure_temp.ToString(); _at.Attenuator = (double.Parse(_at.PowerMaster) - double.Parse(_at.measuredPower)).ToString(); //Hiển thị kết quả đo lên giao diện phần mềm (RichTextBox) _fi.LOGDATA += "Average Power = " + Pwr_measure_temp.ToString("0.##") + " dBm\r\n"; App.Current.Dispatcher.BeginInvoke(new Action(() => { GlobalData.autoAttenuator.Add(_at); })); return(true); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.ToString()); return(false); } }
private bool Verify_Signal(formattinfo _fi, ModemTelnet ModemTelnet, Instrument instrument, string Mode, string MCS, string BW, string Channel_Freq, string Anten, int _Id) { try { string Result_Measure_temp = ""; double Pwr_measure_temp = 0; string _wifi = ""; string standard_2G_5G = int.Parse(Channel_Freq.Substring(0, 4)) < 3000 ? "2G" : "5G"; switch (Mode) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", BW == "0" ? "20" : "40"); break; } case "4": { switch (BW) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } //Thiết lập tần số máy đo string _error = ""; instrument.config_Instrument_Channel(Channel_Freq, ref _error); string value = ""; RE: //Gửi lệnh yêu cầu ONT phát WIFI TX string _message = ""; ModemTelnet.Verify_Signal_SendCommand(standard_2G_5G, Mode, MCS, BW, Channel_Freq, Anten, ref _message); Thread.Sleep(100); //Đọc kết quả từ máy đo Result_Measure_temp = instrument.config_Instrument_get_Power("RFB", _wifi); //Lấy dữ liệu Power try { Pwr_measure_temp = double.Parse(Result_Measure_temp); } catch { goto RE; } value = Pwr_measure_temp.ToString(); //Hiển thị kết quả đo lên giao diện phần mềm (RichTextBox) _fi.LOGDATA += "Average Power = " + Pwr_measure_temp.ToString("0.##") + " dBm\r\n"; App.Current.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in GlobalData.autoCalculateMaster) { if (item.Anten == Anten && item.Frequency == Channel_Freq.Substring(0, 4)) { switch (_Id) { case 0: { item.Value1 = value; break; } case 1: { item.Value2 = value; break; } case 2: { item.Value3 = value; break; } case 3: { item.Value4 = value; break; } case 4: { item.Value5 = value; break; } } double _avr = Math.Round((double.Parse(value)), 3); double _ret = _avr + double.Parse(item.wirePower); if (item.masterPower == "" || item.masterPower == null || item.masterPower.Length == 0) { item.masterPower = _ret.ToString(); } else { if (_ret - double.Parse(item.masterPower) > 0.2) { item.masterPower = _ret.ToString(); } else if (_ret - double.Parse(item.masterPower) <= 0.2 && _ret - double.Parse(item.masterPower) >= -0.2) { item.masterPower = Math.Round((double.Parse(item.masterPower) + _ret) / 2, 3).ToString(); } } GlobalData.mtIndex++; break; } } })); return(true); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.ToString()); return(false); } }
private bool Verify_Signal(testinginfo _ti, ModemTelnet ModemTelnet, Instrument instrument, string standard_2G_5G, string Mode, string MCS, string BW, string Channel_Freq, string Anten, double Attenuator, ref string _pw, ref string _evm, ref string _freqerr, ref string _pstd, ref string _evmmax) { try { standard_2G_5G = int.Parse(Channel_Freq.Substring(0, 4)) > 3000 ? "5G" : "2G"; string Result_Measure_temp = ""; decimal Pwr_measure_temp, EVM_measure_temp, FreqErr_measure_temp; string _wifi = ""; switch (Mode) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", BW == "0" ? "20" : "40"); break; } case "4": { switch (BW) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } //Đọc giá trị tiêu chuẩn limittx _limit = null; LimitTx.getData(standard_2G_5G, FunctionSupport.Get_WifiStandard_By_Mode(Mode, BW), MCS, out _limit); //Thiết lập tần số máy đo string _error = ""; instrument.config_Instrument_Channel(Channel_Freq, ref _error); //Gửi lệnh yêu cầu ONT phát WIFI TX string _message = ""; ModemTelnet.Verify_Signal_SendCommand(standard_2G_5G, Mode, MCS, BW, Channel_Freq, Anten, ref _message); //Hien_Thi.Hienthi.SetText(rtbAll, _message); //Đọc kết quả từ máy đo Result_Measure_temp = instrument.config_Instrument_get_TotalResult("RFB", _wifi); //Hien_Thi.Hienthi.SetText(rtbAll, Result_Measure_temp); //Lấy dữ liệu Power Pwr_measure_temp = Decimal.Parse(Result_Measure_temp.Split(',')[19], System.Globalization.NumberStyles.Float) + Convert.ToDecimal(Attenuator); if (Pwr_measure_temp < 15) { instrument.config_Instrument_get_TotalResult("VID", _wifi); Result_Measure_temp = instrument.config_Instrument_get_TotalResult("VID", _wifi); //MessageBox.Show(Result_Measure_temp.ToString()); Pwr_measure_temp = Decimal.Parse(Result_Measure_temp.Split(',')[19], System.Globalization.NumberStyles.Float) + Convert.ToDecimal(Attenuator); } //Lấy dữ liệu EVM EVM_measure_temp = Decimal.Parse(Result_Measure_temp.Split(',')[1], System.Globalization.NumberStyles.Float); //Lấy dữ liệu Frequency Error FreqErr_measure_temp = Decimal.Parse(Result_Measure_temp.Split(',')[7], System.Globalization.NumberStyles.Float); //Hiển thị kết quả đo lên giao diện phần mềm (RichTextBox) _limit.power_MAX = "25"; _limit.power_MIN = Anten == "1" ? GlobalData.initSetting.STDPWANTEN1 : GlobalData.initSetting.STDPWANTEN2; _pw = Pwr_measure_temp.ToString("0.##"); _evm = EVM_measure_temp.ToString("0.##"); _freqerr = FreqErr_measure_temp.ToString("0.##"); _pstd = string.Format("{0}~{1}", _limit.power_MIN, _limit.power_MAX); _evmmax = string.Format("{0}", _limit.evm_MAX); _ti.LOGSYSTEM += "Power Limit = " + _pstd + " dBm, Average Power = " + _pw + " dBm\r\n"; _ti.LOGSYSTEM += string.Format("EVM MAX = {0} {2}, EVM All Carriers = {1} {2}\r\n", _evmmax, _evm, _wifi == "b" ? " %" : " dB"); _ti.LOGSYSTEM += "Center Frequency Error = " + _freqerr + " Hz\r\n"; //_ti.LOGSYSTEM += "Average Power = " + Pwr_measure_temp.ToString("0.##") + " dBm\r\n"; //_ti.LOGSYSTEM += string.Format("EVM All Carriers = {0} {1}", EVM_measure_temp.ToString("0.##"), _wifi == "b" ? " %" : " dB\r\n"); //_ti.LOGSYSTEM += "Center Frequency Error = " + FreqErr_measure_temp.ToString("0.##") + " Hz\r\n"; //So sánh kết quả đo với giá trị tiêu chuẩn bool _result = false, _powerOK = false, _evmOK = false, _freqerrOK = true; _powerOK = FunctionSupport.Compare_TXMeasure_With_Standard(_limit.power_MAX, _limit.power_MIN, Pwr_measure_temp); _evmOK = FunctionSupport.Compare_TXMeasure_With_Standard(_limit.evm_MAX, _limit.evm_MIN, EVM_measure_temp); _freqerrOK = FunctionSupport.Compare_TXMeasure_With_Standard(_limit.freqError_MAX, _limit.freqError_MIN, FreqErr_measure_temp); if (_powerOK == false) { _ti.LOGSYSTEM += "FAIL: Power\r\n"; } else if (_evmOK == false) { _ti.LOGSYSTEM += "FAIL: EVM\r\n"; } else if (_freqerrOK == false) { _ti.LOGSYSTEM += "FAIL: Frequency Error\r\n"; } _result = _powerOK && _evmOK && _freqerrOK; return(_result); } catch { return(false); } }