Exemplo n.º 1
0
 void MyExperimentConfigurator_StartExperimentEvent(object sender, EventArgs e)
 {
     MyRunExperimentControl.Configure(m_imager);
     MyRunExperimentControl.InitBarcodeResetRadioButtons();
     MyRunExperimentControl.VM.ExpParams.experimentCurrentPlateNumber = 0;
     MyRunExperimentControl.VM.CurrentPlateNumberText = MyRunExperimentControl.VM.ExpParams.experimentCurrentPlateNumber.ToString();
     VM.ShowRunExperimentPanel = true;
 }
Exemplo n.º 2
0
        void MyExperimentConfigurator_StartExperimentEvent(object sender, EventArgs e)
        {
            Dispatcher.Invoke((Action)(() =>
            {
                MyRunExperimentControl.Configure(m_imager);
                MyRunExperimentControl.InitBarcodeResetRadioButtons();
                MyRunExperimentControl.VM.ExpParams.experimentCurrentPlateNumber = 0;
                MyRunExperimentControl.VM.CurrentPlateNumberText = MyRunExperimentControl.VM.ExpParams.experimentCurrentPlateNumber.ToString();
                VM.ShowRunExperimentPanel = true;
                MyRunExperimentControl.VM.EvalRunStatus();

                GlobalVars.Instance.Status = WGStatus.READY;

                MyRunExperimentControl.Run();
            }));
        }
Exemplo n.º 3
0
 void Configure_RunExperimentControl()
 {
     MyRunExperimentControl.Configure(m_imager);
 }
Exemplo 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);
                }
            }
        }