public Calibrate(BoardTypes boardtype, RelayControler relay_controller, TelnetConnection telnet_connection, MultiMeter meter) { BoardType = boardtype; _relay_ctrl = relay_controller; _telnet_connection = telnet_connection; _meter = meter; }
/// <summary> /// Detects whether the meter is ON and connected to one of the COM ports /// </summary> /// <returns>Whether a meter was detected connected to the system</returns> bool autoDetectMeterCOMPort() { bool detected = false; string[] ports = SerialPort.GetPortNames(); foreach (string portname in ports) { _meter = new MultiMeter(portname); try { _meter.WaitForDsrHolding = false; _meter.OpenComPort(); string idn = _meter.IDN(); _meter.CloseSerialPort(); if (idn.StartsWith("GWInstek,GDM8341")) { detected = true; string msg = string.Format("Multimeter '{0}' communications port auto detected at {1}", idn.TrimEnd('\n'), portname); updateOutputStatus(msg); break; } } catch (Exception ex) { string msg = ex.Message; } } if (!detected) { string msg = string.Format("Unable to detect Multimeter communications port"); updateOutputStatus(msg); } return(detected); }
/// <summary> /// Detects whether the meter is ON and connected to one of the COM ports /// If one is found, the serial port setting is changed automatically /// </summary> /// <returns>Whether a meter was detected connected to the system</returns> bool autoDetectMeterCOMPort() { bool detected = false; string[] ports = SerialPort.GetPortNames(); foreach (string portname in ports) { MultiMeter meter = new MultiMeter(portname); try { meter.WaitForDsrHolding = false; meter.OpenComPort(); string idn = meter.IDN(); meter.CloseSerialPort(); if ( idn.StartsWith("HEWLETT-PACKARD,34401A") || idn.StartsWith("GWInstek,GDM8341") ) { detected = true; Properties.Settings.Default.Meter_COM_Port_Name = portname; Properties.Settings.Default.Meter_Manual_Measurement = false; Properties.Settings.Default.PrePost_Test_Enabled = true; Properties.Settings.Default.Save(); string msg = string.Format("Multimeter '{0}' communications port auto detected at {1}", idn.TrimEnd('\n'), Properties.Settings.Default.Meter_COM_Port_Name); updateOutputStatus(msg); break; } } catch (Exception ex) { string msgx = ex.Message; } meter.CloseSerialPort(); } if (!detected) { string msg = string.Format("Unable to detect Multimeter communications port. Using {0}. Measurements set to manual mode", Properties.Settings.Default.Meter_COM_Port_Name); Properties.Settings.Default.Meter_Manual_Measurement = true; Properties.Settings.Default.Save(); updateOutputStatus(msg); } return detected; }
/// <summary> /// Verifies DC Voltage /// </summary> void preTest(TaskTypes next_task) { // Start the running watch _stopwatch_running.Restart(); // Disable the app setEnablement(false, false); // Init the status text box runStatus_Init(); // Clear output status textBoxOutputStatus.Clear(); // Clear tool strip toolStripTimingStatusLabel.Text = ""; statusStrip.Update(); setRunStatus("Start Pre-test", Color.Black, Color.White); updateOutputStatus("Start Pre-test".PadBoth(80, '-')); // Clear the error _pretest_error_msg = null; // Init the meter object if (Properties.Settings.Default.Meter_Manual_Measurement) _meter = null; else _meter = new MultiMeter(Properties.Settings.Default.Meter_COM_Port_Name); _relay_ctrl.OpenIfClosed(); _relay_ctrl.WriteLine(Relay_Lines.Ember, false); _relay_ctrl.WriteLine(Relay_Lines.Load, false); _relay_ctrl.WriteLine(Relay_Lines.Power, true); Thread.Sleep(1000); if (getSelectedBoardType() == BoardTypes.Honeycomb) { _relay_ctrl.WriteLine(4, false); } relaysShowSetttings(); if (!Properties.Settings.Default.PrePost_Test_Enabled) { pretest_done(next_task); return; } Tests pretest = new Tests(); pretest.Status_Event += _pretest_Status_Event; pretest.MultiMeter = _meter; pretest.RelayController = _relay_ctrl; _task_uut = new Task(() => pretest.Verify_Voltage(3.3 - 0.33, 3.3 + 0.33)); _task_uut.ContinueWith((t) => pretest_done_handler(next_task), TaskContinuationOptions.OnlyOnRanToCompletion); _task_uut.ContinueWith((t) => pretest_exception_handler(t, next_task), TaskContinuationOptions.OnlyOnFaulted); _task_uut.Start(); }