public static List<WizardConfig> createWizardDescriptorFromXLS(bool enableAFC, Modulation modulation, double dataRate) { List<WizardConfig> list = new List<WizardConfig>(); ResourceManager manager = new ResourceManager("NewWDS.Applications.App_Si4455.App_Si4455_Resource", Assembly.GetExecutingAssembly()); ExcelCalculatorAPISpreadsheetGear gear = new ExcelCalculatorAPISpreadsheetGear((byte[]) manager.GetObject("EZR2WizardData_v0_2B")); int workSheetNumber = 0; if (modulation == Modulation.OOK) { workSheetNumber = 1; } if (!enableAFC) { workSheetNumber += 2; } gear.WriteCell(workSheetNumber, "B4", dataRate.ToString("0.###")); int[] numArray = new int[] { 7, 20, 0x1d }; for (int i = 0; i < numArray.Length; i++) { for (int j = numArray[i]; gear.ReadCell(workSheetNumber, "B" + j.ToString()) != ""; j++) { try { WizardConfig item = new WizardConfig { AFCEnabled = enableAFC, Modulation = modulation, DataRate = dataRate, Region = (UsingRegion) Enum.Parse(typeof(UsingRegion), gear.ReadCell(workSheetNumber, "B" + j.ToString()), true) }; string[] strArray = gear.ReadCell(workSheetNumber, "C" + j.ToString()).Split(new char[] { '-' }); double[] numArray2 = new double[Math.Min(strArray.Length, 2)]; if (((strArray.Length < 2) || !WDSConverters.ParseDouble(strArray[0], out numArray2[0])) || !WDSConverters.ParseDouble(strArray[1], out numArray2[1])) { throw new Exception("Could not parse Frequency band: " + gear.ReadCell(workSheetNumber, "B" + j.ToString()).Split(new char[] { '-' })); } item.FrequencyBand = new FreqRange(); item.FrequencyBand.LowEnd = numArray2[0]; item.FrequencyBand.HighEnd = numArray2[1]; string[] strArray2 = gear.ReadCell(workSheetNumber, "D" + j.ToString()).Split(new char[] { '-' }); double[] numArray3 = new double[Math.Min(strArray2.Length, 2)]; if (((strArray2.Length < 2) || !WDSConverters.ParseDouble(strArray2[0], out numArray3[0])) || !WDSConverters.ParseDouble(strArray2[1], out numArray3[1])) { throw new Exception("Could not parse Xtal tolerance: " + gear.ReadCell(workSheetNumber, "D" + j.ToString()).Split(new char[] { '-' })); } item.CrystalTolerance = (int) ((numArray3[0] + numArray3[1]) / 2.0); double[] numArray4 = new double[4]; WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "F" + j.ToString()), out numArray4[0]); WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "G" + j.ToString()), out numArray4[1]); WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "H" + j.ToString()), out numArray4[2]); WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "I" + j.ToString()), out numArray4[3]); item.RangeIndorMax = (int) numArray4[0]; item.RangeIndorAllowed = (int) numArray4[1]; item.RangeOutdorMax = (int) numArray4[2]; item.RangeOutdorAllowed = (int) numArray4[3]; string[] strArray3 = gear.ReadCell(workSheetNumber, "J" + j.ToString()).Split(new char[] { ';' }); double[] numArray5 = new double[Math.Min(strArray3.Length, 2)]; if (((strArray3.Length < 3) || !WDSConverters.ParseDouble(strArray3[1], out numArray5[0])) || !WDSConverters.ParseDouble(strArray3[2], out numArray5[1])) { throw new Exception("Could not parse TX options: " + gear.ReadCell(workSheetNumber, "J" + j.ToString()).Split(new char[] { '-' })); } item.AntennaType = strArray3[0]; item.ConductedPower = numArray5[0]; item.CurrentDriven = numArray5[1]; item.Description = gear.ReadCell(workSheetNumber, "K" + j.ToString()); item.Standards = gear.ReadCell(workSheetNumber, "L" + j.ToString()); if (item.Standards.Contains("~")) { string strValue = item.Standards.Split(new char[] { '~' })[1].Trim(); if (strValue.EndsWith("dBm")) { strValue = strValue.Substring(0, strValue.Length - 3); } double num4 = 0.0; WDSConverters.ParseDouble(strValue, out num4); item.DbmDiff = num4; } item.AntennaGain = gear.ReadCell(workSheetNumber, "M" + j.ToString()); item.TxEirps = gear.ReadCell(workSheetNumber, "N" + j.ToString()); double doubleValue = 0.0; WDSConverters.ParseDouble(gear.ReadCell(workSheetNumber, "R" + j.ToString()), out doubleValue); item.CurrentDriven = doubleValue; string str2 = gear.ReadCell(workSheetNumber, "Q" + j.ToString()); byte result = 0x4f; if (str2.StartsWith("0x") && (str2.Length >= 4)) { byte.TryParse(str2.Substring(2, 2), NumberStyles.HexNumber, (IFormatProvider) null, out result); } item.PowerSetting = result; string str3 = ""; if (item.Standards.Contains("~")) { str3 = item.Standards.Split(new char[] { '~' })[1]; } else if (item.TxEirps.Contains("~")) { str3 = item.TxEirps.Split(new char[] { '~' })[1]; } if ((str3 != "") && str3.EndsWith("dBm")) { double num7 = 0.0; if (WDSConverters.ParseDouble(str3.Substring(0, str3.Length - 3), out num7)) { item.ConductedPower = num7; } } list.Add(item); } catch (Exception exception) { _log.Error("Could not create Si4455 Wizard configuration. " + exception.Message); } } } return list; }
private void dgvTxOptions_SelectionChanged(object sender, EventArgs e) { Console.WriteLine("dgvTxOptions_SelectionChanged " + this.dgvTxOptions.SelectedRows.Count.ToString()); if (this.dgvTxOptions.SelectedRows.Count > 0) { WizardConfig tag = (WizardConfig) this.dgvTxOptions.SelectedRows[0].Tag; Console.WriteLine("Selected wizard config modulation: " + tag.Modulation.ToString()); if (tag != null) { this.rtbTxOptionDescription.Text = tag.Description + "\n" + tag.Standards + "\n" + tag.AntennaGain + "\n" + tag.TxEirps; this.SelectedWizardConfig = tag; } } }