/// <summary> /// XÁC NHẬN WIFI-RX ******************************************* /// 1. Test_Sensivitity_Detail -------//Core /// 2. AutoTestSensivitity -----------//Hỗ trợ tự động test nhiều /// 3. Test_Sensitivity_2G -----------// /// 4. Test_Sensitivity_5G -----------// /// /// </summary> #region VERIFY RX private bool Test_Sensivitity_Detail(testinginfo _ti, ModemTelnet ModemTelnet, Instrument instrument, string standard_2G_5G, string Mode, string MCS, string BW, string Channel_Freq, string Anten, int packet) { try { string wave_form_name = ""; string _channelNo = Attenuator.getChannelNumber(Channel_Freq); double _attenuator = Attenuator.getAttenuator(Channel_Freq, Anten); double power_transmit = -1000; double stPER = 0.0; double PER = 0.0; int RXCounter = 0; //Đọc giá trị PER, POWER TRANSMIT limitrx _limit = null; LimitRx.getData(standard_2G_5G, FunctionSupport.Get_WifiStandard_By_Mode(Mode, BW), MCS, out _limit); power_transmit = _limit.power_Transmit.Trim() == "-" ? -1000 : double.Parse(_limit.power_Transmit); stPER = _limit.PER.Trim() == "-" ? 0 : double.Parse(_limit.PER.Trim().Replace("%", "")); //Lấy tên file wave form WaveForm.getData(Name_measurement, Mode, MCS, BW, out wave_form_name); //Cấu hình ONT về chế độ WIFI RX _ti.LOGSYSTEM += "Cấu hình ONT...\r\n"; string _message = ""; ModemTelnet.TestSensitivity_SendCommand(standard_2G_5G, Mode, MCS, BW, _channelNo, Anten, ref _message); //Hien_Thi.Hienthi.SetText(rtbAll, _message); //Điều khiển máy đo phát gói tin _ti.LOGSYSTEM += string.Format("Cấu hình máy đo phát tín hiệu: Power={0} dBm, waveform={1}\r\n", power_transmit, wave_form_name); instrument.config_HT20_RxTest_MAC(Channel_Freq, (power_transmit + _attenuator).ToString(), packet.ToString(), wave_form_name, RF_Port); //Đọc số gói tin nhận được từ ONT RXCounter = int.Parse(ModemTelnet.TestSensitivity_ReadPER_SendCommand(standard_2G_5G, ref _message)); //Hien_Thi.Hienthi.SetText(rtbAll, _message); //Tính PER và hiển thị PER = Math.Round(((packet - RXCounter) * 100.0) / packet, 2); _ti.LOGSYSTEM += string.Format("PER = {0}%, Sent={1}, Received={2}\r\n", PER, packet, RXCounter); //So sánh PER với tiêu chuẩn bool _result = false; _result = PER <= stPER; return(_result); } catch { return(false); } }
private bool AutoVerifySignal(formattinfo _fi, ModemTelnet ModemTelnet, Instrument instrument, int _Id) { try { List <verifysignal> list = null; _fi.LOGDATA += "------------------------------------------------------------\r\n"; _fi.LOGDATA += string.Format("Bắt đầu thực hiện quá trình đo master power.\r\n"); list = GlobalData.listCalMaster; if (list.Count == 0) { return(false); } bool result = true; string _oldwifi = ""; foreach (var item in list) { Stopwatch st = new Stopwatch(); st.Start(); string _eqChannel = string.Format("{0}000000", item.channelfreq); double _attenuator = Attenuator.getAttenuator(item.channelfreq, item.anten); string _channelNo = Attenuator.getChannelNumber(item.channelfreq); string _wifi = ""; switch (item.wifi) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", item.bandwidth == "0" ? "20" : "40"); break; } case "4": { switch (item.bandwidth) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } if (_oldwifi != _wifi) { string _error = ""; instrument.config_Instrument_Total(RF_Port, _wifi, ref _error); _oldwifi = _wifi; } _fi.LOGDATA = ""; _fi.LOGDATA += "*************************************************************************\r\n"; _fi.LOGDATA += string.Format("{0} - {1} - MCS{2} - BW{3} - Anten {4} - Channel {5}\r\n", RF_Port, FunctionSupport.Get_WifiStandard_By_Mode(item.wifi, item.bandwidth), item.rate, 20 * Math.Pow(2, double.Parse(item.bandwidth)), item.anten, _channelNo); int count = 0; REP: count++; if (!Verify_Signal(_fi, ModemTelnet, instrument, item.wifi, item.rate, item.bandwidth, _eqChannel, item.anten, _Id)) { if (count < 2) { _fi.LOGDATA += string.Format("RETRY = {0}\r\n", count); goto REP; } else { _fi.LOGDATA += string.Format("Phán định = {0}", "FAIL\r\n"); result = false; } } else { _fi.LOGDATA += string.Format("Phán định = {0}\r\n", "PASS"); } st.Stop(); _fi.LOGDATA += string.Format("Thời gian đo : {0} ms\r\n", st.ElapsedMilliseconds); _fi.LOGDATA += "\r\n"; if (GlobalData.mtIsOk == false) { result = false; break; } } //Save master data //if (result == true) Master.Save(); //else // System.Windows.MessageBox.Show("Mạch không đủ tiêu chuẩn làm Master.", "Master", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error); return(result); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.ToString()); return(false); } }
private bool AutoVerifySignal(formattinfo _fi, ModemTelnet ModemTelnet, Instrument instrument) { List <verifysignal> list = null; _fi.LOGDATA += "------------------------------------------------------------\r\n"; _fi.LOGDATA += string.Format("Bắt đầu thực hiện quá trình đo suy hao.\r\n"); list = GlobalData.listCalAttenuator; if (list.Count == 0) { return(false); } bool result = true; string _oldwifi = ""; foreach (var item in list) { Stopwatch st = new Stopwatch(); st.Start(); string _eqChannel = string.Format("{0}000000", item.channelfreq); double _attenuator = Attenuator.getAttenuator(item.channelfreq, item.anten); string _channelNo = Attenuator.getChannelNumber(item.channelfreq); string _wifi = ""; switch (item.wifi) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", item.bandwidth == "0" ? "20" : "40"); break; } case "4": { switch (item.bandwidth) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } if (_oldwifi != _wifi) { string _error = ""; instrument.config_Instrument_Total(RF_Port, _wifi, ref _error); _oldwifi = _wifi; } _fi.LOGDATA += "*************************************************************************\r\n"; _fi.LOGDATA += string.Format("{0} - {1} - MCS{2} - BW{3} - Anten {4} - Channel {5}\r\n", RF_Port, FunctionSupport.Get_WifiStandard_By_Mode(item.wifi, item.bandwidth), item.rate, 20 * Math.Pow(2, double.Parse(item.bandwidth)), item.anten, _channelNo); int count = 0; REP: count++; if (!Verify_Signal(_fi, ModemTelnet, instrument, item.wifi, item.rate, item.bandwidth, _eqChannel, item.anten)) { if (count < 2) { _fi.LOGDATA += string.Format("RETRY = {0}\r\n", count); goto REP; } else { _fi.LOGDATA += string.Format("Phán định = {0}", "FAIL\r\n"); result = false; } } else { _fi.LOGDATA += string.Format("Phán định = {0}\r\n", "PASS"); } st.Stop(); _fi.LOGDATA += string.Format("Thời gian đo suy hao : {0} ms\r\n", st.ElapsedMilliseconds); _fi.LOGDATA += "\r\n"; System.Threading.Thread.Sleep(1000); } return(result); }
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); } }
private bool AutoVerifySignal(testinginfo _ti, ModemTelnet ModemTelnet, Instrument instrument, int _anten, string _CarrierFreq) { List <verifysignal> list = null; _ti.LOGSYSTEM += "------------------------------------------------------------\r\n"; _ti.LOGSYSTEM += string.Format("Bắt đầu thực hiện quá trình kiểm tra anten {0}.\r\n", _anten); list = _anten == 1 ? GlobalData.listTestAnten1 : GlobalData.listTestAnten2; if (list.Count == 0) { return(false); } bool result = true; string _oldwifi = ""; foreach (var item in list) { Stopwatch st = new Stopwatch(); st.Start(); string _eqChannel = string.Format("{0}000000", item.channelfreq); double _attenuator = Attenuator.getAttenuator(item.channelfreq, item.anten); string _channelNo = Attenuator.getChannelNumber(item.channelfreq); string _wifi = ""; switch (item.wifi) { case "0": { _wifi = "b"; break; } case "1": { _wifi = "g"; break; } case "3": { _wifi = string.Format("n{0}", item.bandwidth == "0" ? "20" : "40"); break; } case "4": { switch (item.bandwidth) { case "0": { _wifi = "ac20"; break; } case "1": { _wifi = "ac40"; break; } case "2": { _wifi = "ac80"; break; } case "3": { _wifi = "ac160"; break; } } break; } } if (_oldwifi != _wifi) { string _error = ""; instrument.config_Instrument_Total(RF_Port, _wifi, ref _error); _oldwifi = _wifi; } _ti.LOGSYSTEM += "*************************************************************************\r\n"; _ti.LOGSYSTEM += string.Format("{0} - {1} - {2} - MCS{3} - BW{4} - Anten {5} - Channel {6}\r\n", _CarrierFreq, RF_Port, FunctionSupport.Get_WifiStandard_By_Mode(item.wifi, item.bandwidth), item.rate, 20 * Math.Pow(2, double.Parse(item.bandwidth)), item.anten, _channelNo); int count = 0; string _Power = "", _Evm = "", _FreqErr = "", _pStd = "", _eMax = ""; REP: count++; if (!Verify_Signal(_ti, ModemTelnet, instrument, _CarrierFreq, item.wifi, item.rate, item.bandwidth, _eqChannel, item.anten, _attenuator, ref _Power, ref _Evm, ref _FreqErr, ref _pStd, ref _eMax)) { if (count < 2) { _ti.LOGSYSTEM += string.Format("RETRY = {0}\r\n", count); goto REP; } else { _ti.LOGSYSTEM += string.Format("Phán định = {0}", "FAIL\r\n"); result = false; } } else { _ti.LOGSYSTEM += string.Format("Phán định = {0}\r\n", "PASS"); } App.Current.Dispatcher.Invoke(new Action(() => { string _w = "", _bw = ""; switch (item.wifi) { case "0": { _w = "802.11b"; break; } case "1": { _w = "802.11g"; break; } case "2": { _w = "802.11a"; break; } case "3": { _w = "802.11n"; break; } case "4": { _w = "802.11ac"; break; } } switch (item.bandwidth) { case "0": { _bw = "20"; break; } case "1": { _bw = "40"; break; } case "2": { _bw = "80"; break; } case "3": { _bw = "160"; break; } } GlobalData.datagridlogTX.Add(new logreviewtx() { rangeFreq = _CarrierFreq, Anten = item.anten, wifiStandard = _w, Rate = "MCS" + item.rate, Bandwidth = _bw, Channel = _channelNo, Result = result == true ? "PASS" : "FAIL", averagePower = _Power, centerFreqError = _FreqErr, Evm = _Evm, powerStd = _pStd, evmMAX = _eMax }); })); st.Stop(); _ti.LOGSYSTEM += string.Format("Thời gian verify : {0} ms\r\n", st.ElapsedMilliseconds); _ti.LOGSYSTEM += "\r\n"; } return(result); }
private bool AutoTestSensivitity(testinginfo _ti, ModemTelnet ModemTelnet, Instrument instrument, string _CarrierFreq) { List <sensivitity> list = null; _ti.LOGSYSTEM += "------------------------------------------------------------\r\n"; _ti.LOGSYSTEM += string.Format("Bắt đầu thực hiện Test Sensitivity {0}.\r\n", _CarrierFreq); list = _CarrierFreq == "2G" ? GlobalData.listSensivitity2G : GlobalData.listSensivitity5G; if (list.Count == 0) { return(false); } bool result = true; foreach (var item in list) { Stopwatch st = new Stopwatch(); st.Start(); string _channelNo = Attenuator.getChannelNumber(item.channelfreq); _ti.LOGSYSTEM += "*************************************************************************\r\n"; _ti.LOGSYSTEM += string.Format("{0} - {1} - {2} - MCS{3} - BW{4} - Anten {5} - Channel {6}\r\n", _CarrierFreq, RF_Port, FunctionSupport.Get_WifiStandard_By_Mode(item.wifi, item.bandwidth), item.rate, 20 * Math.Pow(2, double.Parse(item.bandwidth)), item.anten, _channelNo); int count = 0; REP: count++; if (!Test_Sensivitity_Detail(_ti, ModemTelnet, instrument, _CarrierFreq, item.wifi, item.rate, item.bandwidth, item.channelfreq, item.anten, item.packet)) { if (count < 3) { _ti.LOGSYSTEM += string.Format("RETRY = {0}\r\n", count); goto REP; } else { _ti.LOGSYSTEM += string.Format("Phán định = {0}", "FAIL\r\n"); result = false; } //result = false; } else { _ti.LOGSYSTEM += string.Format("Phán định = {0}", "PASS\r\n"); } st.Stop(); _ti.LOGSYSTEM += string.Format("Thời gian test độ nhạy thu : {0} ms\r\n", st.ElapsedMilliseconds); _ti.LOGSYSTEM += "\r\n"; } return(result); }