From 6428fad15dbe79e30a48ffc9aabe31e03a45426c Mon Sep 17 00:00:00 2001 From: patrick <patrick.xu@broconcentric.com> Date: 星期四, 05 十二月 2019 12:50:13 +0800 Subject: [PATCH] 1. 添加部分log信息 2. 修改部分机器人动作流程 3. 开放OperationConfig的InputData参数 --- src/Bro.Device.SeerAGV/SeerAGVDriver.cs | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-) diff --git a/src/Bro.Device.SeerAGV/SeerAGVDriver.cs b/src/Bro.Device.SeerAGV/SeerAGVDriver.cs index fdb4428..b875bda 100644 --- a/src/Bro.Device.SeerAGV/SeerAGVDriver.cs +++ b/src/Bro.Device.SeerAGV/SeerAGVDriver.cs @@ -19,6 +19,7 @@ { public Action<SeerAGVDriver, string> OnAGVPositoinChanged; public Action<SeerAGVDriver, AGVTaskStatus> OnAGVTaskStatusChanged; + public Action<SeerAGVDriver, float, float> OnAGVBatteryLvlChanged; SeerAGVInitialConfig IConfig { @@ -64,6 +65,7 @@ { msg_Position = new SeerMessage((int)AGVCode.QueryPosition, SID); msg_GuideStatus = new SeerMessage((int)AGVCode.QueryTaskStatus, SID, IConfig.IsSimpleMonitor ? JsonConvert.SerializeObject(new { simple = true }) : ""); + msg_Battery = new SeerMessage((int)AGVCode.QueryBattery, SID, IConfig.IsSimpleMonitor ? JsonConvert.SerializeObject(new { simple = true }) : ""); Task.Run(() => { @@ -76,7 +78,7 @@ if (client_Guide != null && client_Guide.Connected) { CancelTask(); - client_Guide.Close(); + client_Guide.Close(); client_Guide = null; } @@ -142,8 +144,24 @@ } } + float batteryLvl = 0; + public float BatteryLvl + { + get => batteryLvl; + set + { + if (batteryLvl != value) + { + float pre = batteryLvl; + batteryLvl = value; + OnAGVBatteryLvlChanged?.Invoke(this, pre, batteryLvl); + } + } + } + SeerMessage msg_Position = new SeerMessage(); SeerMessage msg_GuideStatus = new SeerMessage(); + SeerMessage msg_Battery = new SeerMessage(); private void MonitorAGV() { while (CurrentState != EnumHelper.DeviceState.DSClose && CurrentState != EnumHelper.DeviceState.DSExcept) @@ -153,6 +171,8 @@ SendMsg(client_State, IConfig.StatusPort, msg_Position); Thread.Sleep(IConfig.ScanInterval); SendMsg(client_State, IConfig.StatusPort, msg_GuideStatus); + Thread.Sleep(IConfig.ScanInterval); + SendMsg(client_State, IConfig.StatusPort, msg_Battery); Thread.Sleep(IConfig.ScanInterval); } catch (Exception ex) @@ -231,6 +251,9 @@ case (int)AGVCode.QueryTaskStatus: TaskStatus = (AGVTaskStatus)recMsg.JValues.Value<int>("task_status"); break; + case (int)AGVCode.QueryBattery: + BatteryLvl = recMsg.JValues.Value<float>("battery_level"); + break; default: break; } @@ -253,6 +276,8 @@ { CurrentPosition = ""; SeerMessage msg = new SeerMessage((int)AGVCode.TaskOrder, SID, JsonConvert.SerializeObject(new { id = dest })); + + OnLog?.BeginInvoke(DateTime.Now, this, $"{Name}琛岄┒鍚� {dest}", null, null); SendMsg(client_Guide, IConfig.GuidePort, msg); } } -- Gitblit v1.8.0