/// <summary>
 /// 载入一个设备
 /// </summary>
 /// <param name="interrupt_id">设备中断号</param>
 /// <param name="device">设备实例</param>
 public override void LoadDevice(int interrupt_id, IOBase device)
 {
     if (null == device)
     {
         if (InterruptTables.TryGetValue(interrupt_id, out string label))
         {
             if (DeviceTables.TryGetValue(label, out DeviceTable table))
             {
                 table.RunState = true;
             }
             else
             {
                 ControlInterrupt.Interrupt(DeviceException_Type.Not_Exist, -1, null);
             }
         }
         else
         {
             ControlInterrupt.Interrupt(DeviceException_Type.Not_Exist, -1, null);
         }
     }
     else
     {
         AddDevice(interrupt_id, device);
     }
 }
 public DeviceTable(int device_id, int interrupt_id, List <string> InterruptService, IOBase DevicePointer)
 {
     RunState              = true;
     Device_ID             = device_id;
     InterruptID           = interrupt_id;
     this.InterruptService = InterruptService;
     this.DevicePointer    = DevicePointer;
 }
        /// <summary>
        /// 添加一个设备
        /// </summary>
        /// <param name="interrupt_id">设备中断号</param>
        /// <param name="device">设备实例</param>
        public override void AddDevice(int interrupt_id, IOBase device)
        {
            if (!DeviceTables.ContainsKey(device.Property.DeviceID))
            {
                int interrupt = -1 == interrupt_id?GetInterruptID() : interrupt_id;

                InterruptTables.Add(interrupt, device.Property.DeviceID);
                DeviceTables.Add(device.Property.DeviceID, new DeviceTable(DeviceIDTables.Count, interrupt, new List <string>(), device));
                DeviceIDTables.Add(DeviceIDTables.Count, device.Property.DeviceID);
            }
            else
            {
                //无设备ID则用-1
                ControlInterrupt.Interrupt(DeviceException_Type.Add_Failed, -1, device);
            }
        }
 void IDeviceControlInterrupt.Interrupt(DeviceException_Type exception, int device_id, IOBase device)
 {
     Console.WriteLine("设备控制器:" + exception.ToString() + " " + device_id);
 }
Example #5
0
 /// <summary>
 /// 设备中断接口
 /// </summary>
 /// <param name="exception">异常</param>
 /// <param name="device_id">设备号</param>
 /// <param name="device">设备主体</param>
 public abstract void Interrupt(DeviceException_Type exception, int device_id, IOBase device);
Example #6
0
 /// <summary>
 /// 添加一个设备-创建时加载(虚拟机内部不可动态调整)
 /// </summary>
 /// <param name="interrupt_id">设备中断号</param>
 /// <param name="device">设备实例</param>
 public void AddDevice(int interrupt_id, IOBase device)
 {
     IOController.AddDevice(interrupt_id, device);
 }
Example #7
0
 /// <summary>
 /// 设备控制器运行时中断回调接口
 /// </summary>
 /// <param name="exception"></param>
 /// <param name="device_id"></param>
 /// <param name="device"></param>
 public override void Interrupt(DeviceException_Type exception, int device_id, IOBase device)
 {
     Show.Show("设备控制器:" + exception.ToString() + " " + device_id);
 }
Example #8
0
 public static Query Create(IOBase io)
 {
     return(new Query(new JsonStore(io)));
 }
Example #9
0
 public JsonStore(IOBase io)
 {
     this.io = io;
 }