using Autofac;
|
using Bro.Common.Helper;
|
using Bro.Common.Model;
|
using Bro.Common.Model.Interface;
|
using Bro.Device.HikCamera;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Drawing.Design;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace A032.Process
|
{
|
public enum PathPositionDefinition
|
{
|
[Description("无地点")]
|
None = 0,
|
[Description("上空Tray地点")]
|
LoadEmptyTray = 1,
|
[Description("卸载空Tray地点")]
|
UnloadEmptyTray = 2,
|
[Description("上满Tray地点")]
|
LoadFullTray = 3,
|
[Description("卸载满Tray地点")]
|
UnloadFullTray = 4,
|
[Description("充电地点")]
|
Charge = 5,
|
}
|
|
public class PathPosition : IComplexDisplay
|
{
|
[Category("导航路径")]
|
[Description("AGV路径节点代码")]
|
public string PositionCode { get; set; }
|
|
[Category("导航路径")]
|
[Description("Robot路径节点数字")]
|
public int PositionNo { get; set; }
|
|
[Category("导航路径")]
|
[Description("路径节点描述")]
|
public PathPositionDefinition Description { get; set; } = PathPositionDefinition.None;
|
|
[Category("归属设备")]
|
[Description("归属设备编号")]
|
[TypeConverter(typeof(PLCDeviceConverter))]
|
public string DeviceOwner { get; set; }
|
|
public string GetDisplayText()
|
{
|
return $"{PositionCode}-{Description}";
|
}
|
}
|
|
public class PositionVisionConfig : IComplexDisplay, IHalconToolPath
|
{
|
[Category("关联配置")]
|
[Description("位置代码")]
|
[TypeConverter(typeof(PositionCodeConverter))]
|
public string PositionCode { get; set; }
|
|
[Category("关联配置")]
|
[Description("适用相机编号")]
|
[TypeConverter(typeof(CameraDeviceConverter))]
|
public string CameraId { get; set; }
|
|
[Category("视觉配置")]
|
[Description("该位置标定矩阵,用于从相机像素坐标转换到机器人的运动二维坐标系,只计算偏移")]
|
[TypeConverter(typeof(SimpleCollectionConvert<double>))]
|
public List<double> Matrix { get; set; } = new List<double>();
|
|
[Category("视觉配置")]
|
[Description("该位置标准点位信息")]
|
[TypeConverter(typeof(ComplexObjectConvert))]
|
[Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
|
public CustomizedPointWithAngle StandardPoint { get; set; } = new CustomizedPointWithAngle();
|
|
[Category("视觉配置")]
|
[Description("该位置拍摄配置")]
|
[TypeConverter(typeof(ComplexObjectConvert))]
|
[Editor(typeof(PropertyObjectEditor), typeof(UITypeEditor))]
|
public HikCameraOperationConfig CameraOpConfig { get; set; } = new HikCameraOperationConfig();
|
|
public string GetDisplayText()
|
{
|
return $"{PositionCode}:曝光:{CameraOpConfig.Exposure};标定矩阵:{string.Join(",", Matrix)}";
|
}
|
|
public List<string> GetHalconToolPathList()
|
{
|
return new List<string>() { CameraOpConfig.AlgorithemPath };
|
}
|
}
|
|
public class PositionCodeConverter : ComboBoxItemTypeConvert
|
{
|
public override void GetConvertHash()
|
{
|
using (var scope = GlobalVar.Container.BeginLifetimeScope())
|
{
|
var config = scope.Resolve<ProcessConfig>();
|
|
config.PositionCollection.ForEach(p =>
|
{
|
_hash[p.PositionCode] = $"{p.PositionCode}-{p.PositionNo}-{p.Description.GetEnumDescription()}";
|
});
|
}
|
}
|
}
|
|
public class PositionNoConverter : ComboBoxItemTypeConvert
|
{
|
public override void GetConvertHash()
|
{
|
using (var scope = GlobalVar.Container.BeginLifetimeScope())
|
{
|
var config = scope.Resolve<ProcessConfig>();
|
|
config.PositionCollection.ForEach(p =>
|
{
|
_hash[p.PositionNo] = $"{p.PositionNo}-{p.PositionCode}-{p.Description.GetEnumDescription()}";
|
});
|
}
|
}
|
}
|
}
|