using System;
using WCS.Entity.Protocol.RGV;
namespace WCS.Entity.Protocol
{
    /// 
    /// RGV 读取协议 后缀 _1=1工位 _2=2工位 无=共用
    /// 
    public interface IRGV521 : IProtocol
    {
        #region 一工位
        /// 
        /// 任务号
        /// 
        int TaskID_1 { get; set; }
        /// 
        /// 任务类型
        /// 
        RGVTaskType TaskType_1 { get; set; }
        /// 
        /// 起始站台
        /// 
        short StartPosition_1 { get; set; }
        /// 
        /// 目标站台
        /// 
        short DestPosition_1 { get; set; }
        /// 
        /// 优先级
        /// 
        short PRIORITY_1 { get; set; }
        /// 
        /// 备用
        /// 
        short RES1_1 { get; set; }
        /// 
        /// 备用
        /// 
        short RES2_1 { get; set; }
        /// 
        /// 一工位状态
        /// 
        RGVStatus Status_1 { get; set; }
        /// 
        /// 触发信号 在通讯协议中为VoucherNo_1
        /// 
        int Trigger_1 { get; set; }
        #endregion 一工位
        #region 二工位
        /// 
        /// 任务号
        /// 
        int TaskID_2 { get; set; }
        /// 
        /// 任务类型
        /// 
        RGVTaskType TaskType_2 { get; set; }
        /// 
        /// 起始站台
        /// 
        short StartPosition_2 { get; set; }
        /// 
        /// 目标站台
        /// 
        short DestPosition_2 { get; set; }
        /// 
        /// 优先级
        /// 
        short PRIORITY_2 { get; set; }
        /// 
        /// 备用
        /// 
        short RES1_2 { get; set; }
        /// 
        /// 备用
        /// 
        short RES2_2 { get; set; }
        /// 
        /// 一工位状态
        /// 
        RGVStatus Status_2 { get; set; }
        /// 
        /// 触发信号 在通讯协议中为VoucherNo_1
        /// 
        int Trigger_2 { get; set; }
        #endregion 二工位
        #region 共用
        /// 
        /// RGV运行状态
        /// 
        RGVRunStatus SystemStatus { get; set; }
        /// 
        /// RGV运行模式
        /// 
        RGVMode WorkMode { get; set; }
        /// 
        /// 备用6
        /// 
        short RES6 { get; set; }
        /// 
        /// 位置
        /// 
        float Position { get; set; }
        /// 
        /// 里程
        /// 
        [IgnoreChanging]
        float Mileage { get; set; }
        /// 
        /// 运行时长 (单位:小时,带小数)
        /// 
        [IgnoreChanging]
        float Runtime { get; set; }
        #endregion 共用
    }
    [Flags]
    public enum RGVStatus : ushort
    {
        光电 = 1 << 0,
        RGV到站 = 1 << 1,
        任务完成 = 1 << 2,
        备用 = 1 << 3,
        备用9 = 1 << 4,
        备用10 = 1 << 5,
        备用11 = 1 << 6,
        备用12 = 1 << 7,
        备用1 = 1 << 8,
        备用2 = 1 << 9,
        备用3 = 1 << 10,
        备用4 = 1 << 11,
        备用5 = 1 << 12,
        备用6 = 1 << 13,
        备用7 = 1 << 14,
        备用8 = 1 << 15,
    }
}