private static bool GetParameterDouble(CommandEventArgs args, string paramName, bool throwException, bool allowNull, out Nullable <double> value)
        {
            value = null;
            IParameterValue parameterValue = GetParameterValue(args, paramName, throwException);

            if (parameterValue == null)
            {
                return(false);
            }

            IDoubleParameterValue param = parameterValue as IDoubleParameterValue;

            if (param == null)
            {
                if (throwException)
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Resources.CommandParameterIncorrectType, args.Command.Name, paramName, parameterValue.GetType().FullName, typeof(IDoubleParameterValue).FullName));
                }
                return(false);
            }

            value = param.Value;
            if (value == null && !allowNull)
            {
                if (throwException)
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, Resources.CommandParameterValueIsEmpty, args.Command.Name, paramName));
                }
            }
            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Called on "Inject" command
        /// </summary>
        /// <param name="args"></param>
        private void OnInject(CommandEventArgs args)
        {
            IDoubleParameterValue vVolume =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Volume"))
                as IDoubleParameterValue;

            if (vVolume != null && vVolume.Value.HasValue)
            {
                m_Volume = vVolume.Value.Value;
                m_InjectHandler.VolumeProperty.Update(m_Volume);
            }

            IIntParameterValue vPosition =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Position"))
                as IIntParameterValue;

            if (vPosition != null && vPosition.Value.HasValue)
            {
                m_Position = vPosition.Value.Value;
                m_InjectHandler.PositionProperty.Update(m_Position);
            }

            m_MyCmDevice.AuditMessage(AuditLevel.Message,
                                      "Injecting " + m_Volume.ToString() +
                                      " ml from Position: " + m_Position.ToString());

            // Start the injection timer that will generate the inject response after
            // after 20 seconds delay.
            m_InjectionTimer.Start();
        }
        private void OnInject(CommandEventArgs args)
        {
            IDoubleParameterValue vVolume =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Volume"))
                as IDoubleParameterValue;

            if (vVolume != null && vVolume.Value.HasValue)
            {
                m_Volume = vVolume.Value.Value;
                m_InjectHandler.VolumeProperty.Update(m_Volume);
            }

            IIntParameterValue vPosition =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Position"))
                as IIntParameterValue;

            if (vPosition != null && vPosition.Value.HasValue)
            {
                m_Position = vPosition.Value.Value;
                m_InjectHandler.PositionProperty.Update(m_Position);
            }

            // Collect information from the injection table to display it
            StringBuilder sb = new StringBuilder("RunningSample:\n");

            sb.Append("RunningIndex=" + m_CurrentSequence.RunningIndex.ToString() + "\n");
            sb.Append("Position=" + m_CurrentSequence.RunningSample.Position + "\n");
            sb.Append("Number=" + m_CurrentSequence.RunningSample.Number + "\n");
            sb.Append("ID=" + m_CurrentSequence.RunningSample.ID + "\n");
            sb.Append("Type=" + m_CurrentSequence.RunningSample.SampleType.ToString() + "\n");
            m_MyCmDevice.AuditMessage(AuditLevel.Message, sb.ToString());

            m_MyCmDevice.AuditMessage(AuditLevel.Message,
                                      "Injecting " + m_Volume.ToString() +
                                      " ml from Position: " + m_Position.ToString());

            Thread.Sleep(5000);

            m_MyCmDevice.AuditMessage(AuditLevel.Message, "Injection done.");

            m_InjectHandler.NotifyInjectResponse();
        }
        /// <summary>
        /// Called when the "SetPercentage" command is sent by Chromeleon.
        /// </summary>
        /// <param name="args">The CommandEventArgs contain a reference to
        /// the command being called and the argument list.</param>
        private void OnSetPercentage(CommandEventArgs args)
        {
            Debug.Assert(args.Command == m_SetPercentageCommand);

            // Get the parameter
            IDoubleParameterValue percentValue =
                args.ParameterValue(m_SetPercentageCommand.FindParameter("Value")) as IDoubleParameterValue;

            Debug.Assert(percentValue != null, "Required parameter is missing!");

            Debug.Assert(percentValue.Value.HasValue);
            double newValue = percentValue.Value.Value;

            // We use the OnSetProperty handler to set the property. This avoids code duplication.
            // The last two parameters are not used by our handler, so it is safe to set them to null.
            SetDoublePropertyEventArgs doubleArgs =
                new SetDoublePropertyEventArgs(m_PercentageProperty, newValue, null, null);

            OnSetProperty(doubleArgs);
        }
Beispiel #5
0
        private void OnInject(CommandEventArgs args)
        {
            m_ReadyProperty.Update(0); //set ready state to not ready
            IDoubleParameterValue vVolume =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Volume"))
                as IDoubleParameterValue;

            if (vVolume != null &&              // if this parameter is set...
                vVolume.Value.HasValue)         // ... to some value
            {
                m_Volume = vVolume.Value.Value;
                m_InjectHandler.VolumeProperty.Update(m_Volume);
            }

            IIntParameterValue vPosition =
                args.ParameterValue(m_InjectHandler.InjectCommand.FindParameter("Position"))
                as IIntParameterValue;

            if (vPosition != null &&            // if this parameter is set...
                vPosition.Value.HasValue)       // ... to some value
            {
                m_Position = vPosition.Value.Value;
                m_InjectHandler.PositionProperty.Update(m_Position);
            }

            m_Device.AuditMessage(AuditLevel.Message,
                                  "Injecting " + m_Volume.ToString() +
                                  " ml from Position: " + m_Position.ToString());

            // The injection takes a while...
            Thread.Sleep(5000);

            m_Device.AuditMessage(AuditLevel.Message, "Injection done.");

            // After the injection has finished, we send the inject response.
            m_InjectHandler.NotifyInjectResponse();
        }
        /// <summary>
        /// Called when the "CommandWith4Parameters" command is sent by Chromeleon.
        /// </summary>
        /// <param name="args">The CommandEventArgs contain a reference to
        /// the command being called and the argument list.</param>
        private void OnCommandWith4Parameters(CommandEventArgs args)
        {
            Debug.Assert(args.Command == m_CommandWith4Parameters);

            // This command does not really do anything but retrieving the different parameters
            // and showing them in the audit trail.

            StringBuilder sb = new StringBuilder("CommandWith4Parameters was called with the following parameters:");

            // check for Param1
            IIntParameterValue param1Value =
                args.ParameterValue(m_CommandWith4Parameters.FindParameter("Param1")) as IIntParameterValue;

            sb.Append("\nParam1=");

            if (param1Value != null)
            {
                sb.Append(param1Value.Value);
            }
            else
            {
                sb.Append("<not set>");
            }

            // check for Param2
            IDoubleParameterValue param2Value =
                args.ParameterValue(m_CommandWith4Parameters.FindParameter("Param2")) as IDoubleParameterValue;

            sb.Append("\nParam2=");

            if (param2Value != null)
            {
                sb.Append(param2Value.Value);
            }
            else
            {
                sb.Append("<not set>");
            }

            // check for Param3
            IIntParameterValue param3Value =
                args.ParameterValue(m_CommandWith4Parameters.FindParameter("Param3")) as IIntParameterValue;

            sb.Append("\nParam3=");

            if (param3Value != null)
            {
                sb.Append(param3Value.Value);
            }
            else
            {
                sb.Append("<not set>");
            }


            // check for Param4
            IStringParameterValue param4Value =
                args.ParameterValue(m_CommandWith4Parameters.FindParameter("Param4")) as IStringParameterValue;

            sb.Append("\nParam4=");

            if (param4Value != null)
            {
                sb.Append(param4Value.Value);
            }
            else
            {
                sb.Append("<not set>");
            }

            m_MyCmDevice.AuditMessage(AuditLevel.Message, sb.ToString());
        }