/// <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); }
/// <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);
/// <summary> /// 添加一个设备-创建时加载(虚拟机内部不可动态调整) /// </summary> /// <param name="interrupt_id">设备中断号</param> /// <param name="device">设备实例</param> public void AddDevice(int interrupt_id, IOBase device) { IOController.AddDevice(interrupt_id, device); }
/// <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); }
public static Query Create(IOBase io) { return(new Query(new JsonStore(io))); }
public JsonStore(IOBase io) { this.io = io; }