| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- namespace Aitex.Core.RT.IOCore
 
- {
 
-     public delegate  void  SetValue<T>(int index, T Value);
 
-     public delegate  T GetValue<T>(int index);
 
-     public enum IOType
 
-     {
 
-         DI,
 
-         DO,
 
-         AI,
 
-         AO,  
 
-     }
 
-     public class IOAccessor<T>
 
-     {
 
-         protected string name;
 
-         protected string addr;
 
-         protected int index;
 
-         protected T[] values;
 
-         protected SetValue<T> setter = null;
 
-         protected GetValue<T> getter = null;
 
-         public T Value
 
-         {
 
-             get
 
-             {
 
-                 return getter(index);
 
-             }
 
-             set
 
-             {
 
-                 setter(index, value);
 
-             }
 
-         }
 
-         public T[] Buffer
 
-         {
 
-             get
 
-             {
 
-                 return values;
 
-             }
 
-         }
 
-         public string Name
 
-         {
 
-             get { return name; }
 
-         }
 
-         public int Index
 
-         {
 
-             get { return index; }
 
-         }
 
-         public int BlockOffset
 
-         {
 
-             get;
 
-             set;
 
-         }
 
-         public string Addr
 
-         {
 
-             get { return addr; }
 
-             set { addr = value; }
 
-         }
 
-         public string Provider
 
-         {
 
-             get;
 
-             set;
 
-         }
 
-         public string Description
 
-         {
 
-             get;
 
-             set;
 
-         }
 
-         public string StringIndex
 
-         {
 
-             get
 
-             {
 
-                 return name.Substring(0, 2) + "-" + index.ToString();
 
-             }
 
-         }
 
-         public int IoTableIndex { get; set; }
 
-         public IOAccessor(string name, int index, T[] values) 
 
-         {
 
-             this.name   = name;
 
-             this.index  = index;
 
-             this.values = values;
 
-             getter = GetValue;
 
-             setter = SetValue;
 
-         }
 
-         private T GetValue(int index)
 
-         {
 
-             Debug.Assert(values!= null && index >= 0 && index < values.Length);
 
-             return values[index];
 
-         }
 
-         private void SetValue(int index, T value)
 
-         {
 
-             Debug.Assert(values != null && index >= 0 && index < values.Length);
 
-             values[index] = value;
 
-         }
 
-     }
 
-     public class DIAccessor : IOAccessor<bool>
 
-     {
 
-         private IOAccessor<bool> rawAccessor;
 
-         public bool RawData
 
-         {
 
-             get 
 
-             {
 
-                 return rawAccessor.Value ;
 
-             }
 
-             set
 
-             {
 
-                 rawAccessor.Value = value ;
 
-             }
 
-         }
 
-         public DIAccessor(string name, int index, bool[] values, bool[] raws)
 
-             :base(name, index, values)
 
-         {
 
-             rawAccessor = new IOAccessor<bool>(name, index, raws);
 
-         }
 
-     }
 
-     public class DOAccessor : IOAccessor<bool>
 
-     {
 
-         public DOAccessor(string name, int index, bool[] values)
 
-         :base(name,index, values)
 
-         {
 
-             setter = SetValueSafe;
 
-         }
 
-  
 
-         public bool SetValue(bool value, out string reason)
 
-         {
 
-             if (IO.CanSetDO(name, value, out reason))
 
-             {
 
-                 values[index] =  value ;    
 
-                 return true;
 
-             }
 
-             return false;
 
-         }
 
-         public bool Check(bool value, out string reason)
 
-         {
 
-             return IO.CanSetDO(name, value, out reason);
 
-         }
 
-         private void SetValueSafe(int index, bool value)
 
-         {
 
-             string reason;
 
-             if (IO.CanSetDO(name, value , out reason))
 
-             {
 
-                 values[index] = value;              
 
-             }            
 
-         }
 
-     }
 
-     public class AIAccessor : IOAccessor<short>
 
-     {
 
-         public AIAccessor(string name, int index, short[] values)
 
-         :base(name,index, values)
 
-         { 
 
-         } 
 
-     }
 
-     public class AOAccessor : IOAccessor<short>
 
-     {
 
-         public AOAccessor(string name, int index, short[] values)
 
-         :base(name,index, values)
 
-         { 
 
-         }
 
-     }
 
-     
 
- }
 
 
  |