From 7971d855ba2cf9772b46a7f67e2b669c0afcb91b Mon Sep 17 00:00:00 2001
From: patrick <patrick.xu@broconcentric.com>
Date: 星期二, 22 十月 2019 11:30:35 +0800
Subject: [PATCH] 1. 添加标定操作及界面 2. 修改配置界面方法调用参数 3. SeerAGV添加电池信息监听 4. 添加AGV电池充电操作 5. 修改AGV状态变化操作,添加操作锁

---
 src/Bro.Device.SeerAGV/SeerAGVDriver.cs |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/src/Bro.Device.SeerAGV/SeerAGVDriver.cs b/src/Bro.Device.SeerAGV/SeerAGVDriver.cs
index fdb4428..635132e 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> 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,23 @@
             }
         }
 
+        float batteryLvl = 0;
+        public float BatteryLvl
+        {
+            get => batteryLvl;
+            set
+            {
+                if (batteryLvl != value)
+                {
+                    batteryLvl = value;
+                    OnAGVBatteryLvlChanged?.Invoke(this, 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 +170,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 +250,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;
                 }

--
Gitblit v1.8.0