Esempio n. 1
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            m_imager = new Imager();
            m_imager.m_cameraEvent      += Imager_CameraEvent;
            m_imager.m_temperatureEvent += Imager_TemperatureEvent;

            bool success = m_imager.Initialize();

            if (success)
            {
                m_imager.m_camera.CoolerON(true);
                VM.CoolingOn         = true;
                TempOnIndicator.Fill = new SolidColorBrush(Colors.Blue);

                MyExperimentConfigurator.SetImager(m_imager);
            }
            else
            {
                MessageBox.Show("Imager Failed to Initialize.  Imager operation disabled.", "Imager Error", MessageBoxButton.OK, MessageBoxImage.Error);

                Dispatcher.BeginInvoke((Action)(() => MainTabControl.SelectedIndex = 1));
                ExperimentConfiguratorTab.IsEnabled = false;
                MaintenanceTab.IsEnabled            = false;
            }
        }
Esempio n. 2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            m_splash = new SplashScreen("/Images/WG_Loading.png");
            m_splash.Show(false);


            bool admin = IsAdministrator();
            //if (admin) { MessageBox.Show("You ARE an administrator"); }
            //else { MessageBox.Show("You ARE NOT an administrator"); }


            bool success = VerifySQLServerServiceRunning();

            // Don't have the security privileges to start services...need to fix
            //  Until this is fixed, just set success = true
            success = true;

            if (success)
            {
                m_imager = new Imager();

                bool done = false;

                while (!done)
                {
                    m_imager.Init();
                    if (m_imager.ImagerReady)
                    {
                        done = true;
                        m_imager.m_cameraEvent            += Imager_CameraEvent;
                        m_imager.m_cameraTemperatureEvent += Imager_TemperatureEvent;

                        m_imager.m_camera.CoolerON(true);
                        VM.CoolingOn = true;
                        CameraTempOnIndicator.Fill = new SolidColorBrush(Colors.Blue);

                        if (GlobalVars.Instance.Enable_EthernetIOModule)
                        {
                            m_imager.m_ethernetIO.m_doorStatusEvent += m_ethernetIO_m_doorStatusEvent;
                            m_imager.m_ethernetIO.m_ioMessageEvent  += m_ethernetIO_m_ioMessageEvent;
                        }

                        if (GlobalVars.Instance.Enable_EnclosureTemperatureController)
                        {
                            m_imager.m_insideTemperatureEvent           += m_imager_m_insideTemperatureEvent;
                            m_imager.m_omegaTempController.MessageEvent += m_omegaTempController_MessageEvent;
                            m_imager.m_omegaTempController.TempEvent    += m_omegaTempController_TempEvent;
                        }

                        MyExperimentConfigurator.Init(m_imager);
                        MyExperimentConfigurator.StartExperimentEvent       += MyExperimentConfigurator_StartExperimentEvent;
                        MyRunExperimentControl.CloseRunExperimentPanelEvent += MyRunExperimentControl_CloseRunExperimentPanelEvent;

                        m_vworksReady = StartVWorks();

                        if (m_vworksReady)
                        {
                            MyRunExperimentControl.VM.StatusChange += VM_StatusChange;
                        }
                    }
                    else
                    {
                        MessageBoxResult response = MessageBox.Show("Imager Failed to Initialize. Retry?" + Environment.NewLine + Environment.NewLine +
                                                                    "   YES - to retry Imager initialization" + Environment.NewLine + Environment.NewLine +
                                                                    "   NO - continue with Imager disabled" + Environment.NewLine,
                                                                    "Imager Error", MessageBoxButton.YesNo, MessageBoxImage.Error);

                        if (response == MessageBoxResult.No)
                        {
                            done = true;
                            Dispatcher.BeginInvoke((Action)(() => MainTabControl.SelectedIndex = 1));
                            ExperimentConfiguratorTab.IsEnabled = false;
                            //MaintenanceTab.IsEnabled = false;
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("MS SQL Server Service could not be started.", "MS SQL Server Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Close();
            }
        }
Esempio n. 3
0
 void MyRunExperimentControl_CloseRunExperimentPanelEvent(object sender, EventArgs e)
 {
     MyExperimentConfigurator.ResetExperimentConfigurator();
     VM.ShowRunExperimentPanel = false;
 }
Esempio n. 4
0
        async private void M_tcpServer_DataReceived(object sender, Message e)
        {
            WaveguideMessage message;

            byte[] packet;
            if (WaveguideMessageUtil.ParseMessage(e.Data, out message))
            {
                m_commandMessageCount++;
                m_timestamp = DateTime.Now.ToString();

                switch (message.messageType)
                {
                case Waveguide.WGMessageType.GET_STATUS:
                    if (WaveguideMessageUtil.Build_Status_Message(GlobalVars.Instance.Status, GlobalVars.Instance.Status.ToString(), out packet))
                    {
                        e.Reply(packet);
                    }
                    break;

                case Waveguide.WGMessageType.CONFIG_EXPERIMENT:
                    ExperimentConfiguration config;
                    PostMessage("Configuration Message Received");
                    // Waveguide must be in ONLINE or READY state to accept a config command
                    if (GlobalVars.Instance.Status == WGStatus.ONLINE || GlobalVars.Instance.Status == WGStatus.READY)
                    {
                        if (ExperimentConfiguration.ParseConfigurationPayload(message.payloadBytes, out config))
                        {
                            if (MyExperimentConfigurator.SetConfiguration(config))
                            {
                                // Set Status to Ready
                                GlobalVars.Instance.Status = WGStatus.READY;

                                // send response
                                if (WaveguideMessageUtil.Build_Status_Message(GlobalVars.Instance.Status, GlobalVars.Instance.Status.ToString(), out packet))
                                {
                                    e.Reply(packet);
                                }
                            }
                            else
                            {
                                GlobalVars.Instance.Status = WGStatus.ONLINE;

                                PostMessage("Configuration Message Format Error");
                                if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__MESSAGE_FORMAT_ERROR,
                                                                              "Failed to parse message", out packet))
                                {
                                    e.Reply(packet);
                                }
                            }
                        }
                        else
                        {
                            // received bad configuration data

                            GlobalVars.Instance.Status = WGStatus.ONLINE;

                            if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__MESSAGE_FORMAT_ERROR,
                                                                          "Failed to parse message", out packet))
                            {
                                e.Reply(packet);
                                PostMessage("Configuration Message Parse Error");
                            }
                        }
                    }
                    else
                    {
                        if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__INCORRECT_MODE,
                                                                      "Current Waveguide mode = " + GlobalVars.Instance.Status.ToString() +
                                                                      "\nIt must be in ONLINE or READY mode in order to accept a configuration command",
                                                                      out packet))
                        {
                            e.Reply(packet);
                            PostMessage("Configuration Message No Accepted.  Waveguide not in correct mode.");
                        }
                    }
                    break;

                case Waveguide.WGMessageType.START_EXPERIMENT:
                    // Waveguide must be in "Ready" state in order to Start an experiment
                    PostMessage("Start Message Received");
                    if (GlobalVars.Instance.Status == WGStatus.READY)
                    {
                        GlobalVars.Instance.Status = WGStatus.RUNNING;
                        if (WaveguideMessageUtil.Build_Status_Message(GlobalVars.Instance.Status, GlobalVars.Instance.Status.ToString(), out packet))
                        {
                            e.Reply(packet);
                        }


                        // Start Experiment!
                        MyExperimentConfigurator.StartExperiment();

                        // wait for camera temperature
                        bool overridden = false;
                        Application.Current.Dispatcher.Invoke(
                            () =>
                        {
                            // Code to run on the GUI thread.
                            TemperatureMonitorDialog tdlg = new TemperatureMonitorDialog(m_imager.m_camera);

                            tdlg.ShowDialog();

                            overridden = tdlg.WasOverridden();

                            if (overridden)
                            {
                                MyRunExperimentControl.VM.CameraTemperatureTarget = MyRunExperimentControl.VM.CameraTemperatureActual;
                            }
                        });


                        await Task.Delay(2000);      // give time for RunExperimentControl to enable run


                        // run vworks protocol
                        MyRunExperimentControl.Run();
                    }
                    else
                    {
                        if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__INCORRECT_MODE,
                                                                      "Current Waveguide mode = " + GlobalVars.Instance.Status.ToString() +
                                                                      "\nIt must be in READY mode in order to accept a Start command",
                                                                      out packet))
                        {
                            e.Reply(packet);
                        }
                    }
                    break;

                case Waveguide.WGMessageType.STOP_EXPERIMENT:
                    PostMessage("Stop Message Received");
                    if (GlobalVars.Instance.Status == WGStatus.RUNNING)
                    {
                        GlobalVars.Instance.Status = WGStatus.READY;
                        if (WaveguideMessageUtil.Build_Status_Message(GlobalVars.Instance.Status, GlobalVars.Instance.Status.ToString(), out packet))
                        {
                            e.Reply(packet);
                        }
                    }
                    else
                    {
                        if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__INCORRECT_MODE,
                                                                      "Current Waveguide mode = " + GlobalVars.Instance.Status.ToString() +
                                                                      "\nIt must be in RUNNING mode in order to accept a Stop command",
                                                                      out packet))
                        {
                            e.Reply(packet);
                        }
                    }
                    break;

                case Waveguide.WGMessageType.STATUS:
                    break;
                }
            }
            else
            {
                //m_vm.status = WGStatus.ERROR;
                if (WaveguideMessageUtil.Build_Status_Message(WGStatus.MESSAGE_FAILED__MESSAGE_FORMAT_ERROR,
                                                              "Error Parsing Message", out packet))
                {
                    e.Reply(packet);
                }
            }
        }