From 809abe2aac4617cc838d36fec913f5268a066eb4 Mon Sep 17 00:00:00 2001
From: patrick <patrick.xu@broconcentric.com>
Date: 星期六, 19 十月 2019 13:50:28 +0800
Subject: [PATCH] 1. 简化部分配置 2. 修改OmronFins驱动

---
 src/A032.Process/ProcessControl.cs |  113 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 82 insertions(+), 31 deletions(-)

diff --git a/src/A032.Process/ProcessControl.cs b/src/A032.Process/ProcessControl.cs
index 7d26329..04638ee 100644
--- a/src/A032.Process/ProcessControl.cs
+++ b/src/A032.Process/ProcessControl.cs
@@ -179,7 +179,7 @@
 
             ProcessState = DeviceState.DSOpen;
 
-            QueryRobotIO();
+            //QueryRobotIO();
 
             //Task.Run(() =>
             //{
@@ -298,9 +298,43 @@
             InitialAGVs();
             InitialCameras();
 
+            InitialAGVBindUnit();
+
+            InitialMachineTrayNums();
+
             AutoFacRegister();
 
             LogAsync(DateTime.Now, "Process Initialized", "");
+        }
+
+        private void InitialMachineTrayNums()
+        {
+            machineEmptyTrayDict = Config.PositionCollection.Where(u => u.Description == PathPositionDefinition.UnloadEmptyTray).ToDictionary(p => p.PositionNo, p => 0);
+
+            machineFullTrayDict = Config.PositionCollection.Where(u => u.Description == PathPositionDefinition.LoadFullTray).ToDictionary(p => p.PositionNo, p => 0);
+        }
+
+        private void InitialAGVBindUnit()
+        {
+            Config.AGVBindCollection.ForEach(u =>
+            {
+                if (AGVDict.ContainsKey(u.AGVId))
+                {
+                    u.AGV = AGVDict[u.AGVId];
+                }
+
+                if (RobotDict.ContainsKey(u.RobotId))
+                {
+                    u.Robot = RobotDict[u.RobotId];
+                }
+
+                if (CameraDict.ContainsKey(u.CameraId))
+                {
+                    u.Camera = CameraDict[u.CameraId];
+                }
+
+                u.OnMethodInvoke = OnBindUnitTaskInvoke;
+            });
         }
 
         private void InitialCameras()
@@ -321,11 +355,11 @@
                 plc.InitialConfig = c;
                 PLCDict[plc.InitialConfig.ID] = plc;
 
-                plc.OnMonitorAlarm -= Plc_OnMonitorAlarm;
-                plc.OnMonitorInvoke -= Plc_OnMonitorInvoke;
+                plc.OnMonitorAlarm -= OnMonitorAlarm;
+                plc.OnMonitorInvoke -= OnMonitorInvoke;
 
-                plc.OnMonitorAlarm += Plc_OnMonitorAlarm;
-                plc.OnMonitorInvoke += Plc_OnMonitorInvoke;
+                plc.OnMonitorAlarm += OnMonitorAlarm;
+                plc.OnMonitorInvoke += OnMonitorInvoke;
             });
         }
 
@@ -336,6 +370,14 @@
                 AuboRobotDriver robot = new AuboRobotDriver();
                 robot.InitialConfig = c;
                 RobotDict[robot.InitialConfig.ID] = robot;
+
+                robot.OnMsgReceived = OnRobotMsgReceived;
+
+                robot.OnMonitorAlarm -= OnMonitorAlarm;
+                robot.OnMonitorInvoke -= OnMonitorInvoke;
+
+                robot.OnMonitorAlarm += OnMonitorAlarm;
+                robot.OnMonitorInvoke += OnMonitorInvoke;
             });
         }
 
@@ -346,6 +388,9 @@
                 SeerAGVDriver agv = new SeerAGVDriver();
                 agv.InitialConfig = c;
                 AGVDict[agv.InitialConfig.ID] = agv;
+
+                agv.OnAGVPositoinChanged = OnAGVPositionChanged;
+                agv.OnAGVTaskStatusChanged = OnAGVTaskStatusChanged;
             });
         }
 
@@ -447,7 +492,7 @@
         /// </summary>
         protected Dictionary<string, HDevEngineTool> _halconToolDict = new Dictionary<string, HDevEngineTool>();
 
-        private void InitialProcessMethods()
+        public virtual void InitialProcessMethods()
         {
             _processMethodDict = new Dictionary<string, MethodInfo>();
             var methods = this.GetType().GetMethods().ToList();
@@ -458,7 +503,7 @@
                 {
                     _processMethodDict[attr.MethodCode] = m;
 
-                    #region 鍒濆鍖朒alconTool
+                    #region 鍒濆鍖朒alconTool 鏍规嵁processMethod鐨勭壒鎬ф潵閰嶇疆
                     //if (attr.DeviceType.EndsWith("Camera"))
                     //{
                     //    if (StationConfig.ProcessOpConfigDict.Keys.Contains(attr.MethodCode))
@@ -484,29 +529,39 @@
                 }
             });
 
-            #region 鍒濆鍖朒alconTool
+            #region 鍒濆鍖朒alconTool 鏍规嵁閰嶇疆鐨勬帴鍙g被鍨嬫潵閰嶇疆
             _halconToolDict = new Dictionary<string, HDevEngineTool>();
             Config.PLCConfigCollection.SelectMany(plcConfig => plcConfig.MonitorSetCollection).Select(ms => ms.OpConfig).ToList().ForEach(c =>
+            {
+                InitialHalconTool(c as IHalconToolPath);
+            });
+
+            Config.VisionConfigCollection.ForEach(c =>
+            {
+                InitialHalconTool(c as IHalconToolPath);
+            });
+            #endregion
+        }
+
+        private void InitialHalconTool(IHalconToolPath toolPath)
+        {
+            //IHalconToolPath toolPath = c as IHalconToolPath;
+            if (toolPath != null)
+            {
+                toolPath.GetHalconToolPathList().ForEach(path =>
                 {
-                    IHalconToolPath toolPath = c as IHalconToolPath;
-                    if (toolPath != null)
+                    if (!string.IsNullOrWhiteSpace(path) && !_halconToolDict.ContainsKey(path))
                     {
-                        toolPath.GetHalconToolPathList().ForEach(path =>
-                        {
-                            if (!string.IsNullOrWhiteSpace(path))
-                            {
-                                string directoryPath = Path.GetDirectoryName(path);
-                                string fileName = Path.GetFileNameWithoutExtension(path);
+                        string directoryPath = Path.GetDirectoryName(path);
+                        string fileName = Path.GetFileNameWithoutExtension(path);
 
-                                HDevEngineTool tool = new HDevEngineTool(directoryPath);
-                                tool.LoadProcedure(fileName);
+                        HDevEngineTool tool = new HDevEngineTool(directoryPath);
+                        tool.LoadProcedure(fileName);
 
-                                _halconToolDict[path] = tool;
-                            }
-                        });
+                        _halconToolDict[path] = tool;
                     }
                 });
-            #endregion
+            }
         }
 
         public List<IDevice> GetDeviceList()
@@ -521,9 +576,8 @@
             return list;
         }
 
-        #region PLC鐩戝惉
-
-        private void Plc_OnMonitorInvoke(DateTime dt, MonitorSet monitorSet)
+        #region IMonitor鐩戝惉
+        private void OnMonitorInvoke(DateTime dt, IDevice device, MonitorSet monitorSet)
         {
             IOperationConfig config = monitorSet.OpConfig;
             string methodCode = monitorSet.MethodCode;
@@ -535,7 +589,7 @@
                 try
                 {
                     //鏈塈OperationConfig鍙傛暟鐨勮皟鐢�
-                    res = _processMethodDict[methodCode].Invoke(this, new object[] { config });
+                    res = _processMethodDict[methodCode].Invoke(this, new object[] { config, device });
                     reTryTimes = -1;
                 }
                 catch (Exception invokeEX)  //娴佺▼鍔ㄤ綔寮傚父澶辫触
@@ -653,7 +707,7 @@
             #endregion
         }
 
-        private void Plc_OnMonitorAlarm(DateTime dt, WarningSet warning, bool isAlarmRaised)
+        private void OnMonitorAlarm(DateTime dt, IDevice device, WarningSet warning, bool isAlarmRaised)
         {
         }
 
@@ -1099,7 +1153,7 @@
         protected Dictionary<string, Queue<string>> CameraBitmapDict = new Dictionary<string, Queue<string>>();
         //protected Dictionary<string, Bitmap> CameraBitmapDict = new Dictionary<string, Bitmap>();
 
-        protected HObject CollectHImage(CameraBase camera, IOperationConfig opConfig, string cameraId, string methodCode)
+        protected HObject CollectHImage(CameraBase camera, IOperationConfig opConfig, string methodCode)
         {
             HObject hImage = null;
 
@@ -1131,9 +1185,6 @@
 
                 camera.UploadOperationConfig(opConfig);
                 camera.Snapshot(opConfig, out hImage);
-
-                //SaveTempImage(cameraName, camera.ImageFilePath);
-                //SaveTempImage(camera, cameraId);
 
                 if (cameraConifg.DelayAfter > 0)
                 {

--
Gitblit v1.8.0