Example #1
0
        public Calibrate(BoardTypes boardtype, RelayControler relay_controller, TelnetConnection telnet_connection, MultiMeter meter)
        {
            BoardType = boardtype;

            _relay_ctrl = relay_controller;
            _telnet_connection = telnet_connection;
            _meter = meter;
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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;
        }
Example #4
0
        /// <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();
        }