IOBase.cs 2.6 KB
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSA_V.Common;

namespace TSA_V.DeviceLibrary
{
    public abstract class IOBase
    {
        public   ushort DIStartAddress = 200;
        public   ushort DoStartAddress = 100;
        public static ushort DefaultDILength = 16;
        public static ushort DefaultDOLength = 16;

        public static IOBase instance = null;
        public static byte DefualtSlaveID = 0x00;
        public abstract void ConnectionKND(List<string> dIODeviceNameList);
        /// <summary>
        /// 没有轨道线体
        /// </summary>
        public static bool NoLine = false;

        public static int  IOType = Setting_NInit.Work_IOType;

        public static void Init()
        {
            //int isAIOBox = ConfigAppSettings.GetIntValue(Setting_Init.UseAIOBOX);
            IOType = Setting_NInit.Work_IOType;
            if (IOType == 1)
            {
                instance = new AIOBOXManager();
            }
            else if (IOType == 2)
            {
                instance = new NanjingSDotIO();
            }
            else if (IOType == 3)
            {
                instance = new NiRenIO();
                NoLine = true;
            }else if (IOType == 99)
            {
                instance = new EmulationIO();
                NoLine = true;
                LogUtil.info("使用模拟IO");
            }
            else
            {
                instance = new KNDManager();
            }
        }
        public static  bool  UseEmulationIO 
        {
            get { return IOType == 99; }
            set { }
        }
        public abstract void ReadAllDI(string deviceName, byte slaveId); 

        public abstract void ReadAllDO(string deviceName, byte slaveId);
        public abstract void ConnectionIP(string kNDIP, ushort kNDPort);
        public abstract void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value, int time);
        public abstract bool IsConnection(string kNDIP);
        public abstract void WriteSingleDO(string deviceName, byte slaveId, ushort index, IO_VALUE value);


        public abstract IO_VALUE GetDIValue(string deviceName, byte slaveID, ushort v);


        public abstract IO_VALUE GetDOValue(string deviceName, byte slaveID, ushort v);
         

        public abstract IO_VALUE GetIOValue(ConfigIO configIO);

        public abstract void CloseAllDO();


        public abstract void CloseAllConnection();

        public virtual  void WriteSingleDI(string deviceName, byte slaveId, ushort index, IO_VALUE value)
        {
        }
    }
}