private void startButton_Click(object sender, RoutedEventArgs e)
        {
            var w = Window.GetWindow(this) as MainWindow;

            ROSADevice rosa   = w.device as ROSADevice;
            ROSAOutput output = w.output as ROSAOutput;

            if (rosa.VPD_RSSI == "vpd")
            {
                Instruments.instance.OpenRelay(1);
                Instruments.instance.OpenRelay(2);
                Instruments.instance.OpenRelay(4);
            }
            else
            {
                Instruments.instance.CloseRelay(1);
                Instruments.instance.OpenRelay(2);
                Instruments.instance.OpenRelay(4);
            }

            Instruments.instance.SetArroyoLaserOff();
            var power = Instruments.instance.GetThorlabsPower();

            Debug.Print($"Fiber power: {power}");
            output.Fiber_Power = 1000 * power / Instruments.instance.alignmentPowerCalibration;

            powerText.Text            = $"Fiber power: {String.Format("{0:0.00}",(1000 * power / Instruments.instance.alignmentPowerCalibration))}mW";
            successMessage.Visibility = Visibility.Visible;
            powerText.Visibility      = Visibility.Visible;

            startButton.Visibility    = Visibility.Collapsed;
            nextStepButton.Visibility = Visibility.Visible;
        }
예제 #2
0
        private async void Wiggle()
        {
            ROSADevice device = d as ROSADevice;
            ROSAOutput output = o as ROSAOutput;

            bool wiggleTestResult = true;

            WiggleData wiggleData = await TestCalculations.ROSAWiggleTest(device.V_Test, (device.RSSI_VPD == "VPD"), (int)device.Wiggle_Time, wiggleProgress);

            wiggleMin.Text = wiggleData.min.ToString("F") + " mW";
            wiggleMax.Text = wiggleData.max.ToString("F") + " mW";
            wiggleAvg.Text = wiggleData.avg.ToString("F") + " mW";

            double i_wiggle = 10 * Math.Log10(wiggleData.max / wiggleData.min);

            iWiggle.Text = i_wiggle.ToString("F") + " dB";
            bool I_Wiggle_Pass = (i_wiggle <= device.PD_Wiggle_Max);

            output.Wiggle_Pass = I_Wiggle_Pass;

            if (!I_Wiggle_Pass)
            {
                iWiggle.Foreground = Brushes.OrangeRed;
                wiggleTestResult   = false;
            }

            measurementPanel.Visibility = Visibility.Visible;
            var w = Window.GetWindow(this) as MainWindow;

            if (wiggleTestResult)
            {
                passed                  = true;
                testMessage.Text        = "Test Passed";
                testMessage.Foreground  = Brushes.ForestGreen;
                StartTestButton.Content = "End job";
                output.Result           = true;
                MainWindow.Conn.SaveROSAOutput(output);
                d        = device;
                o        = output;
                w.device = d;
                w.output = o;
            }
            else
            {
                testMessage.Text       = "Test Failed";
                testMessage.Foreground = Brushes.OrangeRed;
                if (numTries >= 3)
                {
                    StartTestButton.Content = "Go home";
                    output.Result           = false;
                    MainWindow.Conn.SaveROSAOutput(output);
                }
                else
                {
                    StartTestButton.Content = "Retry test";
                }
            }
        }
예제 #3
0
        public ROSADevice GetROSADevice(int id)
        {
            if (!File.Exists(DbFile))
            {
                return(null);
            }

            using (var cnn = DataFileConnection())
            {
                cnn.Open();
                ROSADevice result = cnn.Query <ROSADevice>(
                    @"select * from ROSADevice where id = @id", new { id }).FirstOrDefault();
                return(result);
            }
        }
 public void SaveROSADevice(ROSADevice device)
 {
     using (var conn = SimpleDbConnection())
     {
         conn.Open();
         conn.Execute(
             @"INSERT INTO ROSADevice
             ( Part_Number, VPD_RSSI, Resp_Min )
             values 
             ( @part_number, @vpd_rssi, @resp_min )",
             new {
             part_number = device.Part_Number,
             vpd_rssi    = device.VPD_RSSI,
             resp_Min    = device.Resp_Min
         });
     }
 }
예제 #5
0
        public void SaveROSADevice(ROSADevice rosa)
        {
            if (!File.Exists(DbFile))
            {
                return;
            }

            using (var cnn = DataFileConnection())
            {
                cnn.Open();
                cnn.Execute(
                    @"insert into ROSADevice
                    (
                        Part_Number,
	                    V_Test,
	                    RESP_Min,
	                    I_TIA_Max,
	                    PD_Wiggle_Max,
	                    Wiggle_Time,
	                    RSSI_VPD
                    )
                    values
                    (
                        @Part_Number,
	                    @V_Test,
	                    @RESP_Min,
	                    @I_TIA_Max,
	                    @PD_Wiggle_Max,
	                    @Wiggle_Time,
	                    @RSSI_VPD
                    )",
                    new
                {
                    Part_Number   = rosa.Part_Number,
                    V_Test        = rosa.V_Test,
                    RESP_Min      = rosa.RESP_Min,
                    I_TIA_Max     = rosa.I_TIA_Max,
                    PD_Wiggle_Max = rosa.PD_Wiggle_Max,
                    Wiggle_Time   = rosa.Wiggle_Time,
                    RSSI_VPD      = rosa.RSSI_VPD
                }
                    );
            }
        }
        public ROSADevice GetROSADevice(int id)
        {
            if (!File.Exists(DbFile))
            {
                return(null);
            }

            using (var conn = SimpleDbConnection())
            {
                conn.Open();
                ROSADevice device = conn.Query <ROSADevice>(
                    @"SELECT id, 
                        part_number, 
                        vpd_rssi,
                    FROM ROSADevice
                    where id = @id",
                    new { id }).FirstOrDefault();

                return(device);
            }
        }
예제 #7
0
        private void DarkLight()
        {
            ROSADevice device = d as ROSADevice;
            ROSAOutput output = o as ROSAOutput;

            bool darkLightResult = true;

            DLData dl = TestCalculations.DarkLightTest(device.V_Test, (device.RSSI_VPD == "VPD"));

            foreach (TextBlock tb in Utils.FindVisualChildren <TextBlock>(measurementPanel))
            {
                tb.Foreground = Brushes.White;
            }

            vTest.Text    = device.V_Test.ToString("F") + " V";
            output.V_Test = device.V_Test;

            iTIA.Text = dl.i_tia.ToString("F") + " mA";
            bool I_TIA_Pass = (dl.i_tia <= device.I_TIA_Max);

            output.I_TIA      = dl.i_tia;
            output.I_TIA_Pass = I_TIA_Pass;

            if (!I_TIA_Pass)
            {
                iTIA.Foreground = Brushes.OrangeRed;
                darkLightResult = false;
            }

            iDark.Text = dl.i_dark.ToString("F") + " mA";

            output.I_Dark = dl.i_dark;

            iPD.Text = dl.i_pd.ToString("F") + " mA";

            responsivity.Text = dl.responsivity.ToString("F");
            bool Responsivity_Pass = (dl.responsivity >= device.RESP_Min);

            output.Responsivity = dl.responsivity;
            output.RESP_Pass    = Responsivity_Pass;

            if (!Responsivity_Pass)
            {
                responsivity.Foreground = Brushes.OrangeRed;
                darkLightResult         = false;
            }

            measurementPanel.Visibility = Visibility.Visible;
            var w = Window.GetWindow(this) as MainWindow;

            darkLightResult = true;

            if (darkLightResult)
            {
                passed                  = true;
                testMessage.Text        = "Test Passed";
                testMessage.Foreground  = Brushes.ForestGreen;
                StartTestButton.Content = "Next step";
                d        = device;
                o        = output;
                w.device = d;
                w.output = o;
            }
            else
            {
                testMessage.Text       = "Test Failed";
                testMessage.Foreground = Brushes.OrangeRed;
                if (numTries >= 3)
                {
                    StartTestButton.Content = "Go home";
                    output.Result           = false;
                    MainWindow.Conn.SaveROSAOutput(output);
                }
                else
                {
                    StartTestButton.Content = "Retry test";
                }
            }
        }