Aerotech系列文章(4)C# AeroTech的IO

using System;
using System.Text;
using Aerotech.A3200.Properties;

namespace Aerotech.A3200.Commands
{
    public class IOCommands : CommandCategory
    {
        internal IOCommands(Controller controller, int taskNumber, AxisSelectionEnumerator axisEnumerator)
            : base(controller, taskNumber, axisEnumerator)
        {
        }

        public double AnalogInput(int Channel, int Axis)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $AI[");
            stringBuilder.Append(ToString(Channel));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            return base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public double AnalogInput(int Channel, string Axis)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $AI[");
            stringBuilder.Append(ToString(Channel));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            return base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void AnalogOutput(int Channel, int Axis, double Value)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$AO[");
            stringBuilder.Append(ToString(Channel));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void AnalogOutput(int Channel, string Axis, double Value)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$AO[");
            stringBuilder.Append(ToString(Channel));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public int DigitalInput(int Word, int Axis)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $WI[");
            stringBuilder.Append(ToString(Word));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            return (int)base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public int DigitalInput(int Word, string Axis)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $WI[");
            stringBuilder.Append(ToString(Word));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            return (int)base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void DigitalOutput(int Word, int Axis, int Value)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$WO[");
            stringBuilder.Append(ToString(Word));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void DigitalOutput(int Word, string Axis, int Value)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$WO[");
            stringBuilder.Append(ToString(Word));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public int DigitalInputBit(int Bit, int Axis)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $DI[");
            stringBuilder.Append(ToString(Bit));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            return (int)base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public int DigitalInputBit(int Bit, string Axis)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$return");
            stringBuilder.Append(" = $DI[");
            stringBuilder.Append(ToString(Bit));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            return (int)base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void DigitalOutputBit(int Bit, int Axis, int Value)
        {
            string name = base.Controller.Information.Axes[Axis].Name;
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$DO[");
            stringBuilder.Append(ToString(Bit));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(name));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void DigitalOutputBit(int Bit, string Axis, int Value)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("$DO[");
            stringBuilder.Append(ToString(Bit));
            stringBuilder.Append("].");
            stringBuilder.Append(ToString(Axis));
            stringBuilder.Append(" = ");
            stringBuilder.Append(ToString(Value));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void Brake(int[] axisIndexes, OnOff OnOff)
        {
            AxisSelectionEnumerator axisSelectionEnumerator = new AxisSelectionEnumerator(base.Controller, axisIndexes, "axisIndexes");
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("BRAKE ");
            if (axisSelectionEnumerator.Count <= 0)
            {
                throw new ArgumentOutOfRangeException(axisSelectionEnumerator.ArgumentName, Resources.AtLeastOneAxisMustBeSelected);
            }

            for (int i = 0; i < axisSelectionEnumerator.Count; i++)
            {
                stringBuilder.Append(base.Controller.Information.Axes[axisSelectionEnumerator[i]].Name);
                stringBuilder.Append(" ");
            }

            stringBuilder.Append(" ");
            stringBuilder.Append(ToString(EnumToBase(OnOff)));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void Brake(int axisIndex, OnOff OnOff)
        {
            AxisSelectionEnumerator axisSelectionEnumerator = new AxisSelectionEnumerator(base.Controller, new int[1] { axisIndex }, "axisIndex");
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("BRAKE ");
            if (axisSelectionEnumerator.Count != 1)
            {
                throw new ArgumentOutOfRangeException("AxisMask", Resources.ExactlyOneAxisMustBeSelected);
            }

            stringBuilder.Append(base.Controller.Information.Axes[axisSelectionEnumerator[0]].Name);
            stringBuilder.Append(" ");
            stringBuilder.Append(ToString(EnumToBase(OnOff)));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void Brake(string[] axisNames, OnOff OnOff)
        {
            AxisSelectionEnumerator axisSelectionEnumerator = new AxisSelectionEnumerator(base.Controller, axisNames, "axisNames");
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("BRAKE ");
            if (axisSelectionEnumerator.Count <= 0)
            {
                throw new ArgumentOutOfRangeException(axisSelectionEnumerator.ArgumentName, Resources.AtLeastOneAxisMustBeSelected);
            }

            for (int i = 0; i < axisSelectionEnumerator.Count; i++)
            {
                stringBuilder.Append(base.Controller.Information.Axes[axisSelectionEnumerator[i]].Name);
                stringBuilder.Append(" ");
            }

            stringBuilder.Append(" ");
            stringBuilder.Append(ToString(EnumToBase(OnOff)));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void Brake(string axisName, OnOff OnOff)
        {
            AxisSelectionEnumerator axisSelectionEnumerator = new AxisSelectionEnumerator(base.Controller, new string[1] { axisName }, "axisName");
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("BRAKE ");
            if (axisSelectionEnumerator.Count != 1)
            {
                throw new ArgumentOutOfRangeException("AxisMask", Resources.ExactlyOneAxisMustBeSelected);
            }

            stringBuilder.Append(base.Controller.Information.Axes[axisSelectionEnumerator[0]].Name);
            stringBuilder.Append(" ");
            stringBuilder.Append(ToString(EnumToBase(OnOff)));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }

        public void Brake(AxisMask axisMask, OnOff OnOff)
        {
            AxisSelectionEnumerator axisSelectionEnumerator = new AxisSelectionEnumerator(base.Controller, axisMask, "axisMask");
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("BRAKE ");
            if (axisSelectionEnumerator.Count <= 0)
            {
                throw new ArgumentOutOfRangeException(axisSelectionEnumerator.ArgumentName, Resources.AtLeastOneAxisMustBeSelected);
            }

            for (int i = 0; i < axisSelectionEnumerator.Count; i++)
            {
                stringBuilder.Append(base.Controller.Information.Axes[axisSelectionEnumerator[i]].Name);
                stringBuilder.Append(" ");
            }

            stringBuilder.Append(" ");
            stringBuilder.Append(ToString(EnumToBase(OnOff)));
            base.Controller.Commands.ExecuteInternal(base.TaskNumber, stringBuilder.ToString());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值