领胜LDS 键盘AOI检测项目
IImageSet添加图片信息序列化输出
操作配置添加输出信息序列化输出
添加激光扫描参数模型
修改CollectionHImage方法,输出IImageSet
2个文件已添加
10个文件已修改
108 ■■■■ 已修改文件
src/Bro.Common.Device/DeviceBase/CameraBase.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Base/DeviceConfigBase.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Bro.Common.Model.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Helper/PropertyConvertHelper.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Interface/IOperationConfig.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Common.Model/Model/LaserScanParam.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.Gocator/Bro.Device.Gocator.csproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.Gocator/GocatorDriver.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Device.Gocator/packages.config 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.M071.Process/M071Process.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Process/ProcessControl.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/Bro.Process/ProcessControl_Calibration.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
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
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" />
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);
src/Bro.Common.Model/Interface/IOperationConfig.cs
@@ -31,5 +31,10 @@
        /// 调用该操作配置的设备Id
        /// </summary>
        string DeviceId { get; set; }
        /// <summary>
        /// 操作执行后部分输出结果,目前拟采用序列化后的字符串方式保存
        /// </summary>
        string OutputData { get; set; }
    }
}
src/Bro.Common.Model/Model/LaserScanParam.cs
New file
@@ -0,0 +1,21 @@
using 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; }
    }
}
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>
src/Bro.Device.Gocator/GocatorDriver.cs
@@ -1,11 +1,13 @@
using 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");
                            }
src/Bro.Device.Gocator/packages.config
New file
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Newtonsoft.Json" version="11.0.2" targetFramework="net452" />
</packages>
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
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)
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);