JakaCmd.cs 3.4 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JAKA
{
    public class JakaCmd
    {
        /// <summary>
        /// 6位数组命令
        /// </summary>
        private int[] cmd = new int[6];
        /// <summary>
        /// 变量名
        /// </summary>
        static string varName = "huoqu";
        /// <summary>
        /// 命令
        /// </summary>
        /// <param name="cmdType">类型</param>
        /// <param name="point">点位编号</param>
        /// <param name="roundVal"></param>
        public JakaCmd(JakaCmdType cmdType, JakaPoint point,string cmdName)
        {
            cmd[0] = (int)cmdType;
            cmd[1] = (int)point;
            CmdName = cmdName;
        }
        public string CmdName { get; set; }
        /// <summary>
        /// 解析收到的命令
        /// </summary>
        /// <param name="cmdData"></param>
        /// <returns></returns>
        public static string ParseMsg(string recvMsg)
        {
            string[] cmdData=recvMsg.Split(',');   
            if (cmdData != null && cmdData.Length==6)
            {
                if (cmdData[4] == "1")
                {
                    return "收到命令";
                }
                if (cmdData[4] == "2")
                {
                    return "执行完成";
                }
            }
            return $"解析失败:{recvMsg}";
        }
        public void SetRound(int val)
        {
            cmd[2] = val;
        }
        public JakaCmd ToCopy(int roundVal=0)
        {
            JakaCmd jakaCmd = new JakaCmd((JakaCmdType)this.cmd[0], (JakaPoint)this.cmd[1],CmdName);
            jakaCmd.SetRound(roundVal);
            return jakaCmd;
        }
        public static string MoveDone = "执行完成";
        /// <summary>
        /// 检查命令是否是当前命令
        /// </summary>
        /// <param name="recvMsg"></param>
        /// <returns></returns>
        public bool CheckIsCurCmd(string recvMsg)
        {
            string[] cmdData = recvMsg.Split(',');
            if (cmdData != null && cmdData.Length == 6)
            {
                return cmd[0].ToString().Equals(cmdData[0]) && cmd[1].ToString().Equals(cmdData[1]);
            }
            return false;
        }
        /// <summary>
        /// 转化为命令
        /// </summary>
        /// <returns></returns>
        public string ToCmd()
        {
            return $"<{varName}><[{string.Join(",",cmd)}]>";
        }
    }
    public enum JakaCmdType
    {
        /// <summary>
        /// 移动
        /// </summary>
        Move,
        /// <summary>
        /// 旋转
        /// </summary>
        Round,
        /// <summary>
        /// 移动并旋转
        /// </summary>
        MoveAndRound,
        /// <summary>
        /// 回原
        /// </summary>
        Home,
    }
    public enum JakaPoint
    {
        入料口 = 1,
        打印机,
        A上暂存区,
        A下皮带末端,
        B上暂存区,
        B下皮带末端,
        A下到A周转箱1_内侧,
        A下到A周转箱2_外侧,
        A下到B周转箱1_内侧,
        A下到B周转箱2_外侧,
        NG,
        B下到A周转箱1_内侧,
        B下到A周转箱2_外侧,
        B下到B周转箱1_内侧,
        B下到B周转箱2_外侧,
        B下到NG,
        到紧急料区域,
        B下到紧急料区域
    }
}