From eff39fab10e5285f0d1196037f3a237a676346d2 Mon Sep 17 00:00:00 2001
From: xcd <834800634@qq.com>
Date: 星期四, 09 七月 2020 10:17:26 +0800
Subject: [PATCH] IImageSet添加图片信息序列化输出 操作配置添加输出信息序列化输出 添加激光扫描参数模型 修改CollectionHImage方法,输出IImageSet

---
 src/Bro.Common.Model/Helper/PropertyConvertHelper.cs |    3 +
 src/Bro.M071.Process/M071Process.cs                  |   29 ++++++++------
 src/Bro.Device.Gocator/Bro.Device.Gocator.csproj     |    6 +++
 src/Bro.Device.Gocator/GocatorDriver.cs              |   14 +++++++
 src/Bro.Common.Model/Base/DeviceConfigBase.cs        |    4 ++
 src/Bro.Common.Model/Bro.Common.Model.csproj         |    1 
 src/Bro.Common.Model/Interface/IOperationConfig.cs   |    5 ++
 src/Bro.Process/ProcessControl.cs                    |    5 +-
 src/Bro.Common.Device/DeviceBase/CameraBase.cs       |    7 +++
 src/Bro.Common.Model/Model/LaserScanParam.cs         |   21 ++++++++++
 src/Bro.Device.Gocator/packages.config               |    4 ++
 src/Bro.Process/ProcessControl_Calibration.cs        |    9 +++-
 12 files changed, 89 insertions(+), 19 deletions(-)

diff --git a/src/Bro.Common.Device/DeviceBase/CameraBase.cs b/src/Bro.Common.Device/DeviceBase/CameraBase.cs
index 440c7d0..42d1be2 100644
--- a/src/Bro.Common.Device/DeviceBase/CameraBase.cs
+++ b/src/Bro.Common.Device/DeviceBase/CameraBase.cs
@@ -848,6 +848,11 @@
         bool IsAddtionalSaved { get; set; }
 
         event Action<ImageSet> OnImageSetTimeout;
+
+        /// <summary>
+        /// 搴忓垪鍖栨搷浣滅殑鍥惧儚淇℃伅
+        /// </summary>
+        string ImageData { get; set; }
     }
 
     public class ImageSet : IImageSet
@@ -887,6 +892,8 @@
 
         public object SaveLock { get; set; } = new object();
 
+        public virtual string ImageData { get; set; }
+
         public event Action<ImageSet> OnImageSetTimeout;
         private Timer autoDisposeTimer = null;
 
diff --git a/src/Bro.Common.Model/Base/DeviceConfigBase.cs b/src/Bro.Common.Model/Base/DeviceConfigBase.cs
index d6c3658..9c45926 100644
--- a/src/Bro.Common.Model/Base/DeviceConfigBase.cs
+++ b/src/Bro.Common.Model/Base/DeviceConfigBase.cs
@@ -43,6 +43,10 @@
         [Browsable(false)]
         [JsonIgnore]
         public virtual string DeviceId { get; set; } = "";
+
+        [Browsable(false)]
+        [JsonIgnore]
+        public virtual string OutputData { get; set; } = "";
     }
 
     public class InitialConfigBase : IInitialConfig
diff --git a/src/Bro.Common.Model/Bro.Common.Model.csproj b/src/Bro.Common.Model/Bro.Common.Model.csproj
index a66632a..f20a16a 100644
--- a/src/Bro.Common.Model/Bro.Common.Model.csproj
+++ b/src/Bro.Common.Model/Bro.Common.Model.csproj
@@ -151,6 +151,7 @@
     <Compile Include="Model\CustomizedPoint.cs" />
     <Compile Include="Model\CustomizedRectangle.cs" />
     <Compile Include="Model\DeviceOpBind.cs" />
+    <Compile Include="Model\LaserScanParam.cs" />
     <Compile Include="Model\ModbusFrame.cs" />
     <Compile Include="Model\MonitorSet.cs" />
     <Compile Include="Model\MotionCardRelated.cs" />
diff --git a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
index b802a92..ab855ea 100644
--- a/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
+++ b/src/Bro.Common.Model/Helper/PropertyConvertHelper.cs
@@ -679,7 +679,8 @@
                 TextBox tbox = new TextBox
                 {
                     Dock = DockStyle.Fill,
-                    Multiline = true
+                    Multiline = true,
+                    ScrollBars = ScrollBars.Both,
                 };
                 form.Controls.Add(tbox);
 
diff --git a/src/Bro.Common.Model/Interface/IOperationConfig.cs b/src/Bro.Common.Model/Interface/IOperationConfig.cs
index 9a70cf6..25d8fa6 100644
--- a/src/Bro.Common.Model/Interface/IOperationConfig.cs
+++ b/src/Bro.Common.Model/Interface/IOperationConfig.cs
@@ -31,5 +31,10 @@
         /// 璋冪敤璇ユ搷浣滈厤缃殑璁惧Id
         /// </summary>
         string DeviceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔鎵ц鍚庨儴鍒嗚緭鍑虹粨鏋滐紝鐩墠鎷熼噰鐢ㄥ簭鍒楀寲鍚庣殑瀛楃涓叉柟寮忎繚瀛�
+        /// </summary>
+        string OutputData { get; set; }
     }
 }
diff --git a/src/Bro.Common.Model/Model/LaserScanParam.cs b/src/Bro.Common.Model/Model/LaserScanParam.cs
new file mode 100644
index 0000000..a7eb899
--- /dev/null
+++ b/src/Bro.Common.Model/Model/LaserScanParam.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Bro.Common.Model
+{
+    public class LaserScanParam
+    {
+        public int Resolution_X { get; set; }
+        public int Resolution_Y { get; set; }
+        public int Resolution_Z { get; set; }
+
+        public int Offset_X { get; set; }
+        public int Offset_Y { get; set; }
+        public int Offset_Z { get; set; }
+
+        public int Angle_Z { get; set; }
+    }
+}
diff --git a/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj b/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
index 43038f3..bdebec3 100644
--- a/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
+++ b/src/Bro.Device.Gocator/Bro.Device.Gocator.csproj
@@ -65,6 +65,9 @@
     <Reference Include="kApiNet">
       <HintPath>..\..\libs\gocator\kApiNet.dll</HintPath>
     </Reference>
+    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
@@ -109,5 +112,8 @@
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/src/Bro.Device.Gocator/GocatorDriver.cs b/src/Bro.Device.Gocator/GocatorDriver.cs
index 2a659df..8e0bef5 100644
--- a/src/Bro.Device.Gocator/GocatorDriver.cs
+++ b/src/Bro.Device.Gocator/GocatorDriver.cs
@@ -1,11 +1,13 @@
 锘縰sing Bro.Common.Base;
 using Bro.Common.Helper;
 using Bro.Common.Interface;
+using Bro.Common.Model;
 using HalconDotNet;
 using Lmi3d.GoSdk;
 using Lmi3d.GoSdk.Messages;
 using Lmi3d.Zen;
 using Lmi3d.Zen.Io;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Drawing;
@@ -114,6 +116,18 @@
                                 imgSet.HImage_2 = new HImage();
                                 imgSet.HImage_2.GenImage1("uint2", (int)width, zoomHeight, zoomPtr);
 
+                                LaserScanParam para = new LaserScanParam()
+                                {
+                                    Resolution_X = surfaceMsg.XResolution,
+                                    Resolution_Y = surfaceMsg.YResolution,
+                                    Resolution_Z = surfaceMsg.ZResolution,
+                                    Offset_X = surfaceMsg.XOffset,
+                                    Offset_Y = surfaceMsg.YOffset,
+                                    Offset_Z = surfaceMsg.ZOffset,
+                                    Angle_Z = surfaceMsg.ZAngle,
+                                };
+                                imgSet.ImageData = JsonConvert.SerializeObject(para);
+
                                 //imgSet.HImage_2 = imgSet.HImage_2.ZoomImageSize((int)width, zoomHeight, "constant");
                             }
 
diff --git a/src/Bro.Device.Gocator/packages.config b/src/Bro.Device.Gocator/packages.config
new file mode 100644
index 0000000..07e3593
--- /dev/null
+++ b/src/Bro.Device.Gocator/packages.config
@@ -0,0 +1,4 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net452" />
+</packages>
\ No newline at end of file
diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index 8f08ba9..0b2ad8b 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -5,6 +5,7 @@
 using Bro.M071.Model;
 using Bro.Process;
 using HalconDotNet;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
@@ -219,11 +220,10 @@
                       if (camera == null)
                           return;
 
-                      string imgSetId = "";
-                      HImage hImage = null;
+                      IImageSet set = null;
                       try
                       {
-                          hImage = CollectHImage(camera, s.CameraOp.OpConfig, out imgSetId);
+                          set = CollectHImage(camera, s.CameraOp.OpConfig);
                       }
                       catch (ProcessException pEx)
                       {
@@ -231,12 +231,12 @@
                           throw pEx;
                       }
 
-                      if (string.IsNullOrWhiteSpace(imgSetId))
+                      if (set == null)
                       {
                           return;
                       }
 
-                      RunImageHandle(camera, s.CameraOp.OpConfig, hImage, s.Id, s.Name, pMeasure.Measurements);
+                      RunImageHandle(camera, s.CameraOp.OpConfig, set, s.Id, s.Name, pMeasure.Measurements);
                   });
 
             BarCode = "";
@@ -468,7 +468,7 @@
         }
         #endregion
 
-        private async void RunImageHandle(CameraBase camera, IOperationConfig opConfig, HImage hImage, string snapshotId, string snapshotName, List<MeasurementUnit> measureList)
+        private async void RunImageHandle(CameraBase camera, IOperationConfig opConfig, IImageSet imgSet, string snapshotId, string snapshotName, List<MeasurementUnit> measureList)
         {
             await Task.Run(() =>
              {
@@ -476,7 +476,8 @@
                  var keyBindCollection = measureList.SelectMany(u => u.KeyUnitCollection).Where(u => keys.Any(k => k.Key == u.Key)).ToList();
 
                  string toolKey = (opConfig as CameraOprerationConfigBase).AlgorithemPath;
-                 HObject images = hImage;
+                 HObject images = imgSet.HImage;
+                 LaserScanParam scanParam = JsonConvert.DeserializeObject<LaserScanParam>(imgSet.ImageData);
 
                  if (!string.IsNullOrWhiteSpace(toolKey))
                  {
@@ -488,7 +489,7 @@
                          return;
                      }
 
-                     _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = hImage;
+                     _halconToolDict[toolKey].InputImageDic["INPUT_Image"] = imgSet.HImage;
                      if (!_halconToolDict[toolKey].RunProcedure(out string error))
                      {
                          LogAsync(DateTime.Now, $"{snapshotName}鍙栧浘绠楁硶寮傚父锛寋error}", "");
@@ -536,6 +537,8 @@
                              else
                              {
                                  _halconToolDict[keyToolKey].InputImageDic["INPUT_Image"] = image;
+                                 _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_X"] = scanParam.Resolution_X;
+                                 _halconToolDict[keyToolKey].InputTupleDic["INPUT_Resolution_Z"] = scanParam.Resolution_Z;
                                  if (!_halconToolDict[keyToolKey].RunProcedure(out string error))
                                  {
                                      LogAsync(DateTime.Now, $"{k.AliasName}妫�娴嬬畻娉曞紓甯革紝{error}", "");
@@ -568,11 +571,11 @@
                      image.Dispose();
                  });
 
-                 if (count.I != 1)
-                 {
-                     hImage?.Dispose();
-                     hImage = null;
-                 }
+                 //if (count.I != 1)
+                 //{
+                 //    hImage?.Dispose();
+                 //    hImage = null;
+                 //}
              });
         }
         #endregion
diff --git a/src/Bro.Process/ProcessControl.cs b/src/Bro.Process/ProcessControl.cs
index 948b3c0..afbc38d 100644
--- a/src/Bro.Process/ProcessControl.cs
+++ b/src/Bro.Process/ProcessControl.cs
@@ -626,7 +626,7 @@
         #endregion
 
         #region 鍥惧儚澶勭悊
-        protected HImage CollectHImage(CameraBase camera, IOperationConfig opConfig, out string imgSetId, [CallerMemberName]string methodCode = "")
+        protected IImageSet CollectHImage(CameraBase camera, IOperationConfig opConfig, [CallerMemberName]string methodCode = "")
         {
             IImageSet set = null;
 
@@ -675,8 +675,7 @@
                 TimeRecordCSV(DateTime.Now, camera.Name, methodCode + "閲囧浘", (int)sw.ElapsedMilliseconds);
             }
 
-            imgSetId = set?.Id;
-            return set.HImage;
+            return set;
         }
 
         protected async void CameraUpdateImage(CameraBase camera, Bitmap image, string setId)
diff --git a/src/Bro.Process/ProcessControl_Calibration.cs b/src/Bro.Process/ProcessControl_Calibration.cs
index 9463056..1d7a0e4 100644
--- a/src/Bro.Process/ProcessControl_Calibration.cs
+++ b/src/Bro.Process/ProcessControl_Calibration.cs
@@ -107,7 +107,12 @@
         {
             //string imgSetId = "";
             List<IShapeElement> pointList = new List<IShapeElement>();
-            using (HObject hImage = CollectHImage(camera, config.CameraOpConfig, out string imgSetId))
+
+            IImageSet set = CollectHImage(camera, config.CameraOpConfig);
+            if (set == null)
+                return;
+
+            using (HObject hImage = set.HImage)
             {
                 var tool = GetHalconTool(config.CameraOpConfig);
 
@@ -125,7 +130,7 @@
                     pointList.Add(new PointIndicator((float)xList[i], (float)yList[i]));
                 }
 
-                camera.SaveFitImage(pointList, imgSetId);
+                camera.SaveFitImage(pointList, set.Id);
             }
 
             config.Results[sequence - 1].ImageMarkPoint = new CustomizedPoint((pointList[0] as PointIndicator).Center);

--
Gitblit v1.8.0