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