public void SetAttenuatorLevel(AttLevel Level, AttLevel CalibrationLevel) { if (port.IsOpen) { byte[] OutMessage = new byte[3]; OutMessage[0] = 0x8f; OutMessage[1] = (byte)'r'; switch (Level) { case AttLevel._0dB: OutMessage[2] = 0; break; case AttLevel._10dB: OutMessage[2] = 1; break; case AttLevel._20dB: OutMessage[2] = 2; break; case AttLevel._30dB: OutMessage[2] = 3; break; case AttLevel._40dB: OutMessage[2] = 6; break; case AttLevel._50dB: OutMessage[2] = 7; break; default: OutMessage[2] = 0; break; } port.Write(OutMessage, 0, OutMessage.Length); // needed to wait completion int nVersion = GetVersion(); CurrentLevel = Level; CurrentCalibrationLevel = CalibrationLevel; } }
public Int16 GetZeroDbValue(Int64 nFrequencyInHz, AttLevel Level, bool bLinear) { if (GetReferenceArray(Level, bLinear) == null) { return(455); } if (nFrequencyInHz < nFirstCalibrationFrequency) { return(GetReferenceArray(Level, bLinear)[0]); } Int64 nStepInHz = (nLastCalibrationFrequency - nFirstCalibrationFrequency) / GetReferenceArray(Level, bLinear).Length; Int64 nIndex = (nFrequencyInHz - nFirstCalibrationFrequency) / nStepInHz; float fIndex = (nFrequencyInHz - nFirstCalibrationFrequency) / nStepInHz; if (nIndex > GetReferenceArray(Level, bLinear).Length - 1) { nIndex = GetReferenceArray(Level, bLinear).Length - 1; } /* * int IntPart = (int)Math.Truncate(fIndex); * float fFRactionnal = fIndex - (float)Math.Truncate(fIndex); * * * if (nIndex < GetReferenceArray(Level, bLinear).Length - 1) * return (short)(((float)GetReferenceArray(Level, bLinear)[nIndex])*(1.0f- fFRactionnal) + (float)GetReferenceArray(Level, bLinear)[nIndex+1]* fFRactionnal); * else */ return(GetReferenceArray(Level, bLinear)[nIndex]); }
public Int16 GetAverageReferenceLevel(AttLevel Level, bool bLinear = false) { int nSum = 0; foreach (Int16 i in GetReferenceArray(Level, bLinear)) { nSum += i; } nSum /= GetReferenceArray(Level, bLinear).Length; return((Int16)nSum); }
public Int16[] GetReferenceArray(AttLevel Level, bool bLinear) { if (!bLinear) { switch (Level) { case AttLevel._0dB: return(ZeroDbReferenceLevel_0dB); case AttLevel._10dB: return(ZeroDbReferenceLevel_10dB); case AttLevel._20dB: return(ZeroDbReferenceLevel_20dB); case AttLevel._30dB: return(ZeroDbReferenceLevel_30dB); case AttLevel._40dB: return(ZeroDbReferenceLevel_40dB); case AttLevel._50dB: return(ZeroDbReferenceLevel_50dB); default: return(ZeroDbReferenceLevel_0dB); } } else { switch (Level) { case AttLevel._0dB: return(ZeroDbReferenceLevel_linear_0dB); case AttLevel._10dB: return(ZeroDbReferenceLevel_linear_10dB); case AttLevel._20dB: return(ZeroDbReferenceLevel_linear_20dB); case AttLevel._30dB: return(ZeroDbReferenceLevel_linear_30dB); case AttLevel._40dB: return(ZeroDbReferenceLevel_linear_40dB); case AttLevel._50dB: return(ZeroDbReferenceLevel_linear_50dB); default: return(ZeroDbReferenceLevel_linear_0dB); } } }
public void SetReferenceArray(AttLevel Level, Int16[] Array, bool bLinear) { if (!bLinear) { switch (Level) { case AttLevel._0dB: ZeroDbReferenceLevel_0dB = Array; break; case AttLevel._10dB: ZeroDbReferenceLevel_10dB = Array; break; case AttLevel._20dB: ZeroDbReferenceLevel_20dB = Array; break; case AttLevel._30dB: ZeroDbReferenceLevel_30dB = Array; break; case AttLevel._40dB: ZeroDbReferenceLevel_40dB = Array; break; case AttLevel._50dB: ZeroDbReferenceLevel_50dB = Array; break; default: break; } } else { switch (Level) { case AttLevel._0dB: ZeroDbReferenceLevel_linear_0dB = Array; break; case AttLevel._10dB: ZeroDbReferenceLevel_linear_10dB = Array; break; case AttLevel._20dB: ZeroDbReferenceLevel_linear_20dB = Array; break; case AttLevel._30dB: ZeroDbReferenceLevel_linear_30dB = Array; break; case AttLevel._40dB: ZeroDbReferenceLevel_linear_40dB = Array; break; case AttLevel._50dB: ZeroDbReferenceLevel_linear_50dB = Array; break; default: break; } } }
bool ProcessCalibration(bool AllAttenuatorforced = false, UInt16 nCaptureDelay = 0) { if (!CurrentDeviceDef.Attenuator) { return(ProcessCalibrationNoAttenuator()); } DialogResult Result; if (AllAttenuatorforced) { Result = MessageBox.Show("We will run calibration for all attenuators setup", "Need calibration", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } else { Result = MessageBox.Show("Run calibration for all attenuators setup ?", "Need calibration", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); } if (Result == DialogResult.Cancel) { LOGDraw(" canceled", true); return(false); } else { AttLevel Current = (AttLevel)AttLevelcomboBox.SelectedItem; if (Result == DialogResult.No) { if (DeviceInterface.GetDevice().HaveLogDetector) { LOGDraw("Calibration for " + Current.ToString() + " attenuator, using logarithmic detector", true); DeviceInterface.SetAttenuatorLevel(Current, Current); DeviceInterface.RunCalibration(MyNotifier, 9999, false); } if (DeviceInterface.GetDevice().HaveLinDetector) { LOGDraw("Calibration for " + Current.ToString() + " attenuator, using linear detector..", true); DeviceInterface.SetAttenuatorLevel(Current, Current); DeviceInterface.RunCalibration(MyNotifier, 9999, true); } DeviceInterface.SaveCalibration(Program.CalibrationPath); bCalibrationAvailable = true; LOGDraw("done."); } else { foreach (AttLevel Level in Enum.GetValues(typeof(AttLevel))) { if (DeviceInterface.GetDevice().HaveLogDetector) { LOGDraw("Calibration for " + Level.ToString() + " attenuator, using logarihtmic detector..", true); DeviceInterface.SetAttenuatorLevel(Level, Level); DeviceInterface.RunCalibration(MyNotifier, 4000, false); } if (DeviceInterface.GetDevice().HaveLinDetector) { LOGDraw("Calibration for " + Level.ToString() + " attenuator, using linear detector..", true); DeviceInterface.SetAttenuatorLevel(Level, Level); DeviceInterface.RunCalibration(MyNotifier, 4000, true); } LOGDraw("done."); } DeviceInterface.SaveCalibration(Program.CalibrationPath); bCalibrationAvailable = true; if (Program.Save.AttCal) { DeviceInterface.SetAttenuatorLevel(Current, Current); } else { DeviceInterface.SetAttenuatorLevel(Current, AttLevel._0dB); } } return(true); } }