/// <summary> /// 根据表格的行信息执行控制 /// </summary> /// <param name="model"></param> private void GetControlCommand(DeviceModel model, ref CommandInvoker cmdInvoker) { if (model == null) { return; } if (model.IsDoorOperate) { if (model.DoorOperateFlag == true) { // 开门操作 OpenDoorCommand cmd = new OpenDoorCommand(Controller, model.DeviceNo); cmdInvoker.AddCommand(cmd); } else { // 关门操作 CloseDoorCommand cmd = new CloseDoorCommand(Controller, model.DeviceNo); cmdInvoker.AddCommand(cmd); } } if (model.IsGoLayer) { // 走层操作 RunCommand cmd = new RunCommand(Controller, model.DeviceNo); cmd.dstLayers = new int[1] { model.DstLayerNo }; cmdInvoker.AddCommand(cmd); } }
/// <summary> /// 全部关门 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCloseDoor_Click(object sender, EventArgs e) { // 获得选中的行 int[] selectedIdx = gvDeviceInfo.GetSelectedRows(); foreach (int item in selectedIdx) { // 将选中行的信息转换为设备模型对象 DeviceModel model = (DeviceModel)gvDeviceInfo.GetRow(item); // 生成关门命令 CloseDoorCommand cmd = new CloseDoorCommand(Controller, model.DeviceNo); commandInvoker.AddCommand(cmd); } // 执行命令队列里的所有命令 commandInvoker.ExecuteCommand(); }
public DoorController(OpenDoorCommand openDoorCommand, CloseDoorCommand closeDoorCommand, GetDoorDirectionQuery getDoorDirectionQuery) { _openDoorCommand = openDoorCommand; _closeDoorCommand = closeDoorCommand; _getDoorDirectionQuery = getDoorDirectionQuery; }
public Door() { Close = new CloseDoorCommand(); Open = new OpenDoorCommand(); }