using System;
using System.Collections.Generic;
using System.Text;

namespace Model
{
    public class MDevice
    {
        private bool _IsChange = false;
        /// <summary>
        /// 用于判断这条数据是否改变
        /// </summary>
        public bool IsChange
        {
            set { _IsChange = value; }
            get { return _IsChange; }
        }

        #region  add by lyj 20180111
        private int _lanenum;
        /// <summary>
        /// 巷道号
        /// </summary>
        public int LaneNum
        {
            get { return _lanenum; }
            set { _lanenum = value; }
        }

        //20180111
        private int _isvirtualdevice;
        /// <summary>
        /// 是否为虚拟设备
        /// </summary>
        public int IsVirtualDevice
        {
            get { return _isvirtualdevice; }
            set { _isvirtualdevice = value; }
        }
        //20180111
        private int _stackno;
        /// <summary>
        /// 堆垛机编号
        /// </summary>
        public int StackNo
        {
            get { return _stackno; }
            set { _stackno = value; }
        }

        //20180111
        private int _isshuttleborad;
        /// <summary>
        /// 是否为穿梭板设备
        /// </summary>
        public int IsShuttleBorad
        {
            get { return _isshuttleborad; }
            set { _isshuttleborad = value; }
        }

        //20180111
        private int _lockdaocha;
        /// <summary>
        /// 道岔锁
        /// </summary>
        public int LockDaoCha
        {
            get { return _lockdaocha; }
            set { _lockdaocha = value; }
        }
        #endregion
        string _barcode ="";
        /// <summary>
        /// 托盘条形码
        /// </summary>
        public string Barcode
        {
            set { _barcode = value; }
            get { return _barcode; }
        }
        int _devindex;
        /// <summary>
        /// 设备唯一索引
        /// </summary>
        public int DeviceIndex
        {
            get { return _devindex; }
            set { _devindex = value; }
        }
        int _deviceKind;
        /// <summary>
        /// 设备类型索引
        /// </summary>
        public int DeviceKind
        {
            get { return _deviceKind; }
            set { _deviceKind = value; }
        }
        int _dbw1address;
        /// <summary>
        /// DB1区的发送数据的起始地址
        /// </summary>
        public int Dbw1Address
        {
            get { return _dbw1address; }
            set { _dbw1address = value; }
        }
        int _dbw1SendLength;
        /// <summary>
        /// DB1区的发送长度
        /// </summary>
        public int Dbw1SendLength
        {
            get { return _dbw1SendLength; }
            set { _dbw1SendLength = value; }
        }
        
        int _dbw2address;
        /// <summary>
        /// DB2区的获取数据的起始地址
        /// </summary>
        public int Dbw2Address
        {
            get { return _dbw2address; }
            set { _dbw2address = value; }
        }
        decimal _dbw2GetLength;
        /// <summary>
        /// DB2区的获取数据的长度
        /// </summary>
        public decimal Dbw2Getlength
        {
            get { return _dbw2GetLength; }
            set { _dbw2GetLength = value; }
        }
        string _devname;
        /// <summary>
        /// 设备名称
        /// </summary>
        public string DeviceName
        {
            get { return _devname; }
            set { _devname = value; }
        }
        int _runstate=3;//晟碟默3离线状态
        /// <summary>
        /// 0空闲;1运行;2故障;3离线;4被停用;5动作完成
        /// </summary>
        public int RunState
        {
            get { return _runstate; }
            set { _runstate = value; }
        }
        bool _havegoods;
        /// <summary>
        /// 是否载货
        /// </summary>
        public bool HaveGoods
        {
            get { return _havegoods; }
            set { _havegoods = value; }
        }
        int _controlmode;
        /// <summary>
        /// 1自动,2半自动,3手动
        /// </summary>
        public int ControlMode
        {
            get { return _controlmode; }
            set { _controlmode = value; }
        }
        int _xcoor;
        /// <summary>
        /// X坐标(列)
        /// </summary>
        public int XCoor
        {
            get { return _xcoor; }
            set { _xcoor = value; }
        }
        int _ycoor;
        /// <summary>
        /// Y坐标(层)
        /// </summary>
        public int YCoor
        {
            get { return _ycoor; }
            set { _ycoor = value; }
        }
        int _zcoor;
        /// <summary>
        /// Z坐标(1,2)排
        /// </summary>
        public int ZCoor
        {
            get { return _zcoor; }
            set { _zcoor = value; }
        }
        int _taskno;
        /// <summary>
        /// 设备指令索引
        /// </summary>
        public int TaskNo
        {
            get { return _taskno; }
            set { _taskno = value; }
        }
        char _ifKeyDevice;
        /// <summary>
        /// 是否为关键设备
        /// </summary>
        public char IfKeyDevice
        {
            get { return _ifKeyDevice; }
            set { _ifKeyDevice = value; }
        }
        int _errorCode = 0;//20130226richard.liu
        /// <summary>
        /// 设备故障代码
        /// </summary>
        public int ErrorCode
        {
            get { return _errorCode; }
            set { _errorCode = value; }
        }
        string _arrowLocation = "";
        /// <summary>
        /// 设备运行的目标位置(设备索引)
        /// </summary>
        public string ArrowLocation
        {
            get { return _arrowLocation; }
            set { _arrowLocation = value; }
        }
        string _CommType;
        /// <summary>
        /// 通讯类型库标识
        /// </summary>
        public string CommType
        {
            get { return _CommType; }
            set { _CommType = value; }
        }
        string _BeDetected;
        /// <summary>
        /// 被提前检测的光电组:运行标志,故障点等;负数表示检测有探物
        /// </summary>
        public string BeDetected
        {
            get { return _BeDetected; }
            set { _BeDetected = value; }
        }
        string _BindingDevice;
        /// <summary>
        /// 设备(入口处)探物检测开关的设备索引
        /// </summary>
        public string BindingDevice
        {
            get { return _BindingDevice; }
            set { _BindingDevice = value; }
        }
        string _BindingDeviceOut;
        /// <summary>
        /// 设备出口处检测开关的设备索引
        /// </summary>
        public string BindingDeviceOut
        {
            get { return _BindingDeviceOut; }
            set { _BindingDeviceOut = value; }
        }
        int _DeviceVisual;

        public int DeviceVisual
        {
            get { return _DeviceVisual; }
            set { _DeviceVisual = value; }
        }
        string _ControlName;

        public string ControlName
        {
            get { return _ControlName; }
            set { _ControlName = value; }
        }
        int _AppendBarcode;

        public int AppendBarcode
        {
            get { return _AppendBarcode; }
            set { _AppendBarcode = value; }
        }
        int _MaxSendCount;

        public int MaxSendCount
        {
            get { return _MaxSendCount; }
            set { _MaxSendCount = value; }
        }
        int _SendInterval;

        public int SendInterval
        {
            get { return _SendInterval; }
            set { _SendInterval = value; }
        }
        char _NeedOptimize;

        public char NeedOptimize
        {
            get { return _NeedOptimize; }
            set { _NeedOptimize = value; }
        }
        string _LocalIP;

        public string LocalIP
        {
            get { return _LocalIP; }
            set { _LocalIP = value; }
        }
        int _LocalPort;

        public int LocalPort
        {
            get { return _LocalPort; }
            set { _LocalPort = value; }
        }
        string _RemoteIP;

        public string RemoteIP
        {
            get { return _RemoteIP; }
            set { _RemoteIP = value; }
        }
        int _RemotePort;

        public int RemotePort
        {
            get { return _RemotePort; }
            set { _RemotePort = value; }
        }
        string _OPCProgID;

        public string OPCProgID
        {
            get { return _OPCProgID; }
            set { _OPCProgID = value; }
        }
        int _ErrorTaskNo;
        /// <summary>
        /// 发生错误的设备指令索引
        /// </summary>
        public int ErrorTaskNo
        {
            get { return _ErrorTaskNo; }
            set { _ErrorTaskNo = value; }
        }
        string _SendOutDetect;
        /// <summary>
        /// 输送机送出时需要检测的光电信号设备索引
        /// </summary>
        public string SendOutDetect
        {
            get { return _SendOutDetect; }
            set { _SendOutDetect = value; }
        }
        int[] _returnMessage;
        /// <summary>
        /// 通讯返回的信息
        /// </summary>
        public int[] ReturnMessage
        {
            get { return _returnMessage; }
            set { _returnMessage = value; }
        }
        int[] _sendMessage;
        /// <summary>
        /// 通讯发送的信息
        /// </summary>
        public int[] SendMessage
        {
            get { return _sendMessage; }
            set { _sendMessage = value; }
        }
        string _OnlyDetectIO;
        /// <summary>
        /// 判断一个设备是否只检测IO信号:1只检测IO信号
        /// </summary>
        public string OnlyDetectIO
        {
            get { return _OnlyDetectIO; }
            set { _OnlyDetectIO = value; }
        }
        string _UseCommonDB;
        /// <summary>
        /// 判断一个设备是否使用通用DB区发送指令(长输送机链的中间输送机)
        /// </summary>
        public string UseCommonDB
        {
            get { return _UseCommonDB; }
            set { _UseCommonDB = value; }
        }
        
        string _IfCorrelDoubleFork;
        /// <summary>
        /// 是否为堆垛机多叉关联控制
        /// </summary>
        public string IfCorrelDoubleFork
        {
            get { return _IfCorrelDoubleFork; }
            set { _IfCorrelDoubleFork = value; }
        }
        
        string _DoubleFork;
        /// <summary>
        /// 设备双叉属性:0,不确定;1近货叉;2远货叉
        /// </summary>
        public string DoubleFork
        {
            get { return _DoubleFork; }
            set { _DoubleFork = value; }
        }
        //20100609
        int _SerialPort;
        /// <summary>
        /// 串口序号
        /// </summary>
        public int SerialPort
        {
            get { return _SerialPort; }
            set { _SerialPort = value; }
        }
        //20100609
        string _CommSettings;
        /// <summary>
        /// 串口设置
        /// </summary>
        public string CommSettings
        {
            get { return _CommSettings; }
            set { _CommSettings = value; }
        }
        //20100714
        string _S7Connection;
        /// <summary>
        /// OPC连接ID,默认值:S7:[S7 connection_1]
        /// </summary>
        public string S7Connection
        {
            get { return _S7Connection; }
            set { _S7Connection = value; }
        }

        int _SplitByte;
        /// <summary>
        /// 20101118设备光电开关占用的字节
        /// </summary>
        public int SplitByte
        {
            get { return _SplitByte; }
            set { _SplitByte = value; }
        }
        int _SplitByte_0;
        public int SplitByte_0
        {
            get { return _SplitByte_0; }
            set { _SplitByte_0 = value; }
        }

        int _SplitByte_1;
        public int SplitByte_1
        {
            get { return _SplitByte_1; }
            set { _SplitByte_1 = value; }
        }

        int _SplitByte_2;
        public int SplitByte_2
        {
            get { return _SplitByte_2; }
            set { _SplitByte_2 = value; }
        }
        int _SplitByte_3;
        public int SplitByte_3
        {
            get { return _SplitByte_3; }
            set { _SplitByte_3 = value; }
        }
        int _SplitByte_4;

        public int SplitByte_4
        {
            get { return _SplitByte_4; }
            set { _SplitByte_4 = value; }
        }
        int _SplitByte_5;

        public int SplitByte_5
        {
            get { return _SplitByte_5; }
            set { _SplitByte_5 = value; }
        }
        int _SplitByte_6;

        public int SplitByte_6
        {
            get { return _SplitByte_6; }
            set { _SplitByte_6 = value; }
        }
        int _SplitByte_7;

        public int SplitByte_7
        {
            get { return _SplitByte_7; }
            set { _SplitByte_7 = value; }
        }
        long _ManTaskReserve;
        /// <summary>
        /// 调度任务逻辑预约锁
        /// </summary>
        public long ManTaskReserve
        {
            get { return _ManTaskReserve; }
            set { _ManTaskReserve = value; }
        }
        bool _logicHaveGoods;
        /// <summary>
        /// 是否逻辑有物:数据库对应字段F_HaveGoods值为1时表示逻辑有物
        /// </summary>
        public bool LogicHaveGoods
        {
            get { return _logicHaveGoods; }
            set { _logicHaveGoods = value; }
        }
        string _ReadSubscription;
        /// <summary>
        /// 读订阅开始的设备索引
        /// </summary>
        public string ReadSubscription
        {
            get { return _ReadSubscription; }
            set { _ReadSubscription = value; }
        }
        private string _UnControl;

        public string UnControl
        {
            get { return _UnControl; }
            set { _UnControl = value; }
        }
        //20120820
        private int _forkamount;
        /// <summary>
        /// 堆垛机货叉数量:1,2,3。。。
        /// </summary>
        public int ForkAmount
        {
            get { return _forkamount; }
            set { _forkamount = value; }
        }
        private int _stackReach;
        /// <summary>
        /// 堆垛机货叉进深:1代表单进伸;2代表双进伸
        /// </summary>
        public int StackReach
        {
            get { return _stackReach; }
            set { _stackReach = value; }
        }
        private int _mutexStack;
        /// <summary>
        /// 互斥堆垛机
        /// </summary>
        public int MutexStack
        {
            get { return _mutexStack; }
            set { _mutexStack = value; }
        }
        private int _virtualStack;
        /// <summary>
        /// 多个垛机同轨时的虚拟堆垛机
        /// </summary>
        public int VirtualStack
        {
            get { return _virtualStack; }
            set { _virtualStack = value; }
        }
        private int _stackAbendOut;
        /// <summary>
        /// 堆垛机放货重时的异常口
        /// </summary>
        public int StackAbendOut
        {
            get { return _stackAbendOut; }
            set { _stackAbendOut = value; }
        }
        private string _stackZeroColLayer;
        /// <summary>
        /// 堆垛机的零点列和层坐标“3,1”代表零点是3列1层
        /// </summary>
        public string StackZeroColLayer
        {
            get { return _stackZeroColLayer; }
            set { _stackZeroColLayer = value; }
        }
        private string _specialZXArea;
        /// <summary>
        /// 互斥垛机无法到达的区域"排,起始列-终止列;排,起始列-终止列"
        /// </summary>
        public string SpecialZXArea
        {
            get { return _specialZXArea; }
            set { _specialZXArea = value; }
        }
        private string _PRIZXArea;
        /// <summary>
        /// 两个垛机均可到达,本垛机优先考虑的区域"排,起始列-终止列;排,起始列-终止列"
        /// </summary>
        public string PRIZXArea
        {
            get { return _PRIZXArea; }
            set { _PRIZXArea = value; }
        }
        private string _ifClearDB1;
        /// <summary>
        /// 设备报告运行时,是否清除DB1数据
        /// </summary>
        public string IfClearDB1
        {
            get { return _ifClearDB1; }
            set { _ifClearDB1 = value; }
        }
        string _devname_english;
        /// <summary>
        /// 设备英文名称
        /// </summary>
        public string DeviceName_English
        {
            get { return _devname_english; }
            set { _devname_english = value; }
        }


        private int _batteryStatus;

        public int Battery_Status
        {
            get { return _batteryStatus; }
            set { _batteryStatus = value; }
        }

        private int _switchLock;
        internal object Battery;

        public int Switch_Lock
        {
            get { return _switchLock; }
            set { _switchLock = value; }
        }
        float _mile;//兰州金通20190622
        /// <summary>
        /// 里程)
        /// </summary>
        public float Mile
        {
            get { return _mile; }
            set { _mile = value; }
        }
        float _time;//兰州金通20190622
        /// <summary>
        /// 时间
        /// </summary>
        public float Time
        {
            get { return _time; }
            set { _time = value; }
        }
        //20120820\
        int _isAGViostation;
        /// <summary>
        /// 是否AGV对接设备
        /// </summary>
        public int F_IsAGVIOStation
        {
            get { return _isAGViostation; }
            set { _isAGViostation = value; }
        }
    }
    /// <summary>
    /// 本类用于传送给客户端数据时使用
    /// </summary>
    public class ClientMDevice
    {
        int _devindex;
        /// <summary>
        /// 设备唯一索引
        /// </summary>
        public int DeviceIndex
        {
            get { return _devindex; }
            set { _devindex = value; }
        }
        int _deviceKind;
        /// <summary>
        /// 设备类型索引
        /// </summary>
        public int DeviceKind
        {
            get { return _deviceKind; }
            set { _deviceKind = value; }
        }
        int _errorCode = 0;//20130226richard.liu
        /// <summary>
        /// 设备故障代码
        /// </summary>
        public int ErrorCode
        {
            get { return _errorCode; }
            set { _errorCode = value; }
        }
        bool _havegoods;
        /// <summary>
        /// 是否载货
        /// </summary>
        public bool HaveGoods
        {
            get { return _havegoods; }
            set { _havegoods = value; }
        }
        int _runstate = 3;//晟碟默认给3
        /// <summary>
        /// 0空闲;1运行;2故障;3离线;4被停用;5动作完成
        /// </summary>
        public int RunState
        {
            get { return _runstate; }
            set { _runstate = value; }
        }
        int _taskno;
        /// <summary>
        /// 设备指令索引
        /// </summary>
        public int TaskNo
        {
            get { return _taskno; }
            set { _taskno = value; }
        }
        int _xcoor;
        /// <summary>
        /// X坐标(列)
        /// </summary>
        public int XCoor
        {
            get { return _xcoor; }
            set { _xcoor = value; }
        }
        int _ycoor;
        /// <summary>
        /// Y坐标(层)
        /// </summary>
        public int YCoor
        {
            get { return _ycoor; }
            set { _ycoor = value; }
        }
        int _controlmode;
        /// <summary>
        /// 1自动,2半自动,3手动
        /// </summary>
        public int ControlMode
        {
            get { return _controlmode; }
            set { _controlmode = value; }
        }
        string _barcode;
        /// <summary>
        /// 托盘条形码
        /// </summary>
        public string Barcode
        {
            set { _barcode = value; }
            get { return _barcode; }
        }
        string _arrowLocation;
        /// <summary>
        /// 设备运行的目标位置(设备索引)
        /// </summary>
        public string ArrowLocation
        {
            get { return _arrowLocation; }
            set { _arrowLocation = value; }
        }
        bool _logicHaveGoods;
        /// <summary>
        /// 是否逻辑有物:数据库对应字段F_HaveGoods值为1时表示逻辑有物
        /// </summary>
        public bool LogicHaveGoods
        {
            get { return _logicHaveGoods; }
            set { _logicHaveGoods = value; }
        }
        int _SplitByte_0;
        public int SplitByte_0
        {
            get { return _SplitByte_0; }
            set { _SplitByte_0 = value; }
        }
        int _SplitByte_1;
        public int SplitByte_1
        {
            get { return _SplitByte_1; }
            set { _SplitByte_1 = value; }
        }
        int _SplitByte_2;
        public int SplitByte_2
        {
            get { return _SplitByte_2; }
            set { _SplitByte_2 = value; }
        }
        int _SplitByte_3;
        public int SplitByte_3
        {
            get { return _SplitByte_3; }
            set { _SplitByte_3 = value; }
        }
        int _SplitByte_4;

        public int SplitByte_4
        {
            get { return _SplitByte_4; }
            set { _SplitByte_4 = value; }
        }
        int _SplitByte_5;

        public int SplitByte_5
        {
            get { return _SplitByte_5; }
            set { _SplitByte_5 = value; }
        }
        int _SplitByte_6;

        public int SplitByte_6
        {
            get { return _SplitByte_6; }
            set { _SplitByte_6 = value; }
        }
        int _SplitByte_7;

        public int SplitByte_7
        {
            get { return _SplitByte_7; }
            set { _SplitByte_7 = value; }
        }

        float _mile;//兰州金通20190622
        /// <summary>
        /// 里程)
        /// </summary>
        public float Mile
        {
            get { return _mile; }
            set { _mile = value; }
        }
        float _time;//兰州金通20190622
        /// <summary>
        /// 时间
        /// </summary>
        public float Time
        {
            get { return _time; }
            set { _time = value; }
        }
    

    }
}