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