using LB_SmartVisionCameraSDK.PHM6000;
|
using LB_SmartVisionCommon;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.ComponentModel.DataAnnotations;
|
using System.Linq;
|
using System.Security.Permissions;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace LB_SmartVisionCameraDevice.PHM6000
|
{
|
/// <summary>
|
/// PHM6000Sensor配置参数类
|
/// </summary>
|
[JsonObject(MemberSerialization.OptOut)]
|
[TypeConverter(typeof(PropertySorter))]
|
public class PHM6000SensorConfig
|
{
|
[Category("触发设置"), PropertyOrder(0)]
|
[DisplayName("数据采集触发源")]
|
public EnumDataAcquisitionTriggerSource DataAcquisitionTriggerSource { get; set; } = EnumDataAcquisitionTriggerSource.软触发; //数据采集触发源:0=Software,1=External
|
[Category("触发设置"), PropertyOrder(1)]
|
[DisplayName("行扫描触发源")]
|
public EnumLineScanTriggerSource LineScanTriggerSource { get; set; } = EnumLineScanTriggerSource.固定频率; //如果选择固定频率下面只有一个频率值 ,否则显示触发方向、触发信号计数模式、触发间隔
|
[Category("触发设置"), PropertyOrder(2)]
|
[DisplayName("触发频率")]
|
public float SoftwareTriggerRate { get; set; } = 1000; //触发频率
|
[Category("触发设置"), PropertyOrder(3)]
|
[DisplayName("触发方向")]
|
public EnumEncoderTriggerDirection EncoderTriggerDirection { get; set; } = EnumEncoderTriggerDirection.双向; //触发方向
|
[Category("触发设置"), PropertyOrder(4)]
|
[DisplayName("触发信号计数模式")]
|
public EnumEncoderTriggerSignalCountingMode EncoderTriggerSignalCountingMode { get; set; } = EnumEncoderTriggerSignalCountingMode.X4; //触发信号计数模式
|
[Category("触发设置"), PropertyOrder(5)]
|
[DisplayName("触发间隔")]
|
public int EncoderTriggerInterval { get; set; } = 100; //触发间隔
|
[Category("行扫描设置"), PropertyOrder(6)]
|
[DisplayName("扫描行数")]
|
public int ScanLineCount { get; set; } = 5000; //扫描行数
|
[Category("行扫描设置"), PropertyOrder(7)]
|
[DisplayName("超时时间")]
|
public int CallbackRetrievalTimeout { get; set; } = 4000;
|
[Category("点云设置"), PropertyOrder(8)]
|
[DisplayName("X轴分辨率")]
|
public float XAxisResolution { get; set; } = 105f;
|
[Category("点云设置"), PropertyOrder(9)]
|
[DisplayName("Y轴分辨率")]
|
public float YResolution { get; set; } = 105f; //YAxisResolution
|
[Category("轮廓线提取"), PropertyOrder(10)]
|
[DisplayName("最小灰度")]
|
[Description("最小灰度")]
|
public int MinGrayscaleValue { get; set; } //最小灰度
|
|
//public int MinSpotIntensity { get; set; } //提取点最小强度
|
|
//public int MaxSpotIntensity { get; set; } //提取点最大强度
|
[Category("轮廓线提取"), PropertyOrder(11)]
|
[DisplayName("激光线最小宽度")]
|
[Description("激光线最小宽度")]
|
public int MinLaserLineWidth { get; set; } //激光线最小宽度
|
[Category("轮廓线提取"), PropertyOrder(12)]
|
[DisplayName("激光线最大宽度")]
|
[Description("激光线最大宽度")]
|
public int MaxLaserLineWidth { get; set; } //激光线最大宽度
|
[Category("轮廓线提取"), PropertyOrder(13)]
|
[DisplayName("提取点选择")]
|
[Description("提取点选择")]
|
public EnumSpotSelection SpotSelection { get; set; } //提取点选择
|
[Category("传感器参数"), PropertyOrder(14)]
|
[DisplayName("曝光模式")]
|
[Description("曝光模式")]
|
//曝光模式 HDR=ProductExpTime,HdrExposureTimeProportion1,HdrExposureTimeProportion2
|
//固定频率TIMED=ProductexposureTime
|
//直接定死成固定频率
|
public EnumExposureMode ExposureMode { get; set; } = EnumExposureMode.Timed;
|
[Category("传感器参数"), PropertyOrder(15)]
|
[DisplayName("曝光时间")]
|
[Description("曝光时间")]
|
public int ExposureTime { get; set; }//曝光时间
|
[Category("传感器参数"), PropertyOrder(16)]
|
[DisplayName("模拟增益")]
|
[Description("模拟增益")]
|
public EnumAnalogGain AnalogGain { get; set; } //模拟增益
|
[Category("传感器参数"), PropertyOrder(17)]
|
[DisplayName("模拟增益6030")]
|
[Description("模拟增益6030")]
|
public EnumAnalogGainFor6030 AnalogGainFor6030 { get; set; } //模拟增益for6030
|
[Category("传感器参数"), PropertyOrder(18)]
|
[DisplayName("数字增益")]
|
[Description("数字增益")]
|
public int DigitalGain { get; set; } //数字增益
|
[Category("传感器参数"), PropertyOrder(19)]
|
[DisplayName("激光功率")]
|
[Description("激光功率")]
|
public int LaserPower { get; set; } //激光功率
|
}
|
/// <summary>
|
/// IsCustomAttribute
|
/// </summary>
|
public class IsCustomAttribute : Attribute
|
{
|
|
}
|
/// <summary>
|
/// EnumDownsampling
|
/// </summary>
|
public enum EnumDownsampling
|
{
|
/// <summary>
|
/// EnumDownsampling:X1=1
|
/// </summary>
|
X1 = 1,
|
/// <summary>
|
/// EnumDownsampling:X2=2
|
/// </summary>
|
X2 = 2,
|
/// <summary>
|
/// EnumDownsampling:X4=4
|
/// </summary>
|
X4 = 4,
|
/// <summary>
|
/// EnumDownsampling:X8=8
|
/// </summary>
|
X8 = 8,
|
/// <summary>
|
/// EnumDownsampling:X10=10
|
/// </summary>
|
X10 = 10
|
}
|
/// <summary>
|
/// EnumFilter
|
/// </summary>
|
public enum EnumFilter
|
{
|
/// <summary>
|
/// EnumFilter:None
|
/// </summary>
|
None,
|
/// <summary>
|
/// EnumFilter:Mean
|
/// </summary>
|
Mean,
|
/// <summary>
|
/// EnumFilter:MeanEdgePreserving
|
/// </summary>
|
MeanEdgePreserving,
|
/// <summary>
|
/// EnumFilter:Median
|
/// </summary>
|
Median
|
}
|
/// <summary>
|
/// EnumMeanFilterWindowSize
|
/// </summary>
|
public enum EnumMeanFilterWindowSize
|
{
|
/// <summary>
|
/// EnumMeanFilterWindowSize:WindowSize_2
|
/// </summary>
|
WindowSize_2,
|
/// <summary>
|
/// EnumMeanFilterWindowSize:WindowSize_4
|
/// </summary>
|
WindowSize_4,
|
/// <summary>
|
/// EnumMeanFilterWindowSize:WindowSize_8
|
/// </summary>
|
WindowSize_8,
|
/// <summary>
|
/// EnumMeanFilterWindowSize:WindowSize_16
|
/// </summary>
|
WindowSize_16,
|
/// <summary>
|
/// EnumMeanFilterWindowSize:WindowSize_32
|
/// </summary>
|
WindowSize_32
|
}
|
/// <summary>
|
/// EnumMedianFilterWindowSize
|
/// </summary>
|
public enum EnumMedianFilterWindowSize
|
{
|
/// <summary>
|
/// EnumMedianFilterWindowSize:WindowSize_3
|
/// </summary>
|
WindowSize_3,
|
/// <summary>
|
/// EnumMedianFilterWindowSize:WindowSize_5
|
/// </summary>
|
WindowSize_5,
|
/// <summary>
|
/// EnumMedianFilterWindowSize:WindowSize_7
|
/// </summary>
|
WindowSize_7,
|
/// <summary>
|
/// EnumMedianFilterWindowSize:WindowSize_9
|
/// </summary>
|
WindowSize_9
|
}
|
/// <summary>
|
/// EnumResampling
|
/// </summary>
|
public enum EnumResampling
|
{
|
/// <summary>
|
/// EnumResampling:Nearest
|
/// </summary>
|
Nearest,
|
/// <summary>
|
/// EnumResampling:Farthest
|
/// </summary>
|
Farthest
|
}
|
/// <summary>
|
/// EnumSpotSelection
|
/// </summary>
|
public enum EnumSpotSelection
|
{
|
/// <summary>
|
/// EnumSpotSelection:Strongest
|
/// </summary>
|
Strongest,
|
/// <summary>
|
/// EnumSpotSelection:Nearest
|
/// </summary>
|
Nearest,
|
/// <summary>
|
/// EnumSpotSelection:Farthest
|
/// </summary>
|
Farthest,
|
/// <summary>
|
/// EnumSpotSelection:Invalid
|
/// </summary>
|
Invalid
|
}
|
/// <summary>
|
/// EnumEdgeSelection
|
/// </summary>
|
public enum EnumEdgeSelection
|
{
|
/// <summary>
|
/// EnumEdgeSelection:Center
|
/// </summary>
|
Center,
|
/// <summary>
|
/// EnumEdgeSelection:TopEdge
|
/// </summary>
|
TopEdge,
|
/// <summary>
|
/// EnumEdgeSelection:BottomEdge
|
/// </summary>
|
BottomEdge
|
}
|
/// <summary>
|
/// EnumBrightnessAdjustment
|
/// </summary>
|
public enum EnumBrightnessAdjustment
|
{
|
/// <summary>
|
/// EnumBrightnessAdjustment:Scale_0_5_0
|
/// </summary>
|
Scale_0_5_0,
|
/// <summary>
|
/// EnumBrightnessAdjustment:Scale_0_7_5
|
/// </summary>
|
Scale_0_7_5,
|
/// <summary>
|
/// EnumBrightnessAdjustment:Scale_1_0_0
|
/// </summary>
|
Scale_1_0_0,
|
/// <summary>
|
/// EnumBrightnessAdjustment:Scale_1_5_0
|
/// </summary>
|
Scale_1_5_0
|
}
|
/// <summary>
|
/// EnumExposureMode
|
/// </summary>
|
public enum EnumExposureMode
|
{
|
/// <summary>
|
/// EnumExposureMode:HDR
|
/// </summary>
|
HDR,
|
/// <summary>
|
/// EnumExposureMode:Timed
|
/// </summary>
|
Timed
|
}
|
/// <summary>
|
/// EnumAnalogGain
|
/// </summary>
|
public enum EnumAnalogGain
|
{
|
/// <summary>
|
/// EnumAnalogGain:Gain_1_0
|
/// </summary>
|
Gain_1_0,
|
/// <summary>
|
/// EnumAnalogGain:Gain_1_3
|
/// </summary>
|
Gain_1_3,
|
/// <summary>
|
/// EnumAnalogGain:Gain_1_9
|
/// </summary>
|
Gain_1_9,
|
/// <summary>
|
/// EnumAnalogGain:Gain_2_8
|
/// </summary>
|
Gain_2_8,
|
/// <summary>
|
/// EnumAnalogGain:Gain_5_5
|
/// </summary>
|
Gain_5_5
|
}
|
/// <summary>
|
/// EnumAnalogGainFor8030
|
/// </summary>
|
public enum EnumAnalogGainFor6030
|
{
|
/// <summary>
|
/// EnumAnalogGainFor6030:Gain_1_0
|
/// </summary>
|
Gain_1_0,
|
/// <summary>
|
/// EnumAnalogGainFor6030:Gain_1_3
|
/// </summary>
|
Gain_1_3,
|
/// <summary>
|
/// EnumAnalogGainFor6030:Gain_2_0
|
/// </summary>
|
Gain_2_0,
|
/// <summary>
|
/// EnumAnalogGainFor6030:Gain_3_0
|
/// </summary>
|
Gain_3_0
|
}
|
/// <summary>
|
/// EnumZDirectionRoi
|
/// </summary>
|
public enum EnumZDirectionRoi
|
{
|
/// <summary>
|
/// EnumZDirectionRoi:ImageHeight_1_1
|
/// </summary>
|
ImageHeight_1_1,
|
/// <summary>
|
/// EnumZDirectionRoi:ImageHeight_1_2
|
/// </summary>
|
ImageHeight_1_2,
|
/// <summary>
|
/// EnumZDirectionRoi:ImageHeight_1_4
|
/// </summary>
|
ImageHeight_1_4,
|
/// <summary>
|
/// EnumZDirectionRoi:ImageHeight_1_8
|
/// </summary>
|
ImageHeight_1_8,
|
/// <summary>
|
/// EnumZDirectionRoi:ImageHeight_1_16
|
/// </summary>
|
ImageHeight_1_16
|
}
|
/// <summary>
|
/// EnumDataAcquisitionTriggerSource
|
/// </summary>
|
public enum EnumDataAcquisitionTriggerSource
|
{
|
/// <summary>
|
/// EnumDataAcquisitionTriggerSource:软触发
|
/// </summary>
|
软触发,
|
/// <summary>
|
/// EnumDataAcquisitionTriggerSource:外部触发
|
/// </summary>
|
外部触发
|
}
|
/// <summary>
|
/// EnumLineScanTriggerSource
|
/// </summary>
|
public enum EnumLineScanTriggerSource
|
{
|
/// <summary>
|
/// EnumLineScanTriggerSource:固定频率
|
/// </summary>
|
固定频率,
|
/// <summary>
|
/// EnumLineScanTriggerSource:编码器
|
/// </summary>
|
编码器
|
}
|
/// <summary>
|
/// EnumEncoderTriggerDirection
|
/// </summary>
|
public enum EnumEncoderTriggerDirection
|
{
|
/// <summary>
|
/// EnumEncoderTriggerDirection:A相在前
|
/// </summary>
|
A相在前,
|
/// <summary>
|
/// EnumEncoderTriggerDirection:B相在前
|
/// </summary>
|
B相在前,
|
/// <summary>
|
/// EnumEncoderTriggerDirection:双向
|
/// </summary>
|
双向
|
}
|
/// <summary>
|
/// EnumEncoderTriggerSignalCountingMode
|
/// </summary>
|
public enum EnumEncoderTriggerSignalCountingMode
|
{
|
/// <summary>
|
/// EnumEncoderTriggerSignalCountingMode:X1
|
/// </summary>
|
X1,
|
/// <summary>
|
/// EnumEncoderTriggerSignalCountingMode:X2
|
/// </summary>
|
X2,
|
/// <summary>
|
/// EnumEncoderTriggerSignalCountingMode:X4
|
/// </summary>
|
X4
|
}
|
|
/// <summary>
|
/// EnumEncoderTriggerSignalCountingMode
|
/// </summary>
|
public enum EnumNoiseRemovalIntensity
|
{
|
/// <summary>
|
/// EnumNoiseRemovalIntensity--Low
|
/// </summary>
|
Low,
|
/// <summary>
|
/// EnumNoiseRemovalIntensity--Medium
|
/// </summary>
|
Medium,
|
/// <summary>
|
/// EnumNoiseRemovalIntensity--High
|
/// </summary>
|
High
|
}
|
/// <summary>
|
/// EnumNameId,参数名称定义
|
/// </summary>
|
public enum EnumNameId
|
{
|
/// <summary>
|
/// 滤波器:枚举型,取值范围 {None, Mean, MeanEdgePreserving, Median }
|
/// </summary>
|
Filter,
|
/// <summary>
|
/// 均值滤波器窗口尺寸:枚举型,取值范围 {WindowSize_2, WindowSize_4, WindowSize_8, WindowSize_16, WindowSize_32}
|
/// </summary>
|
MeanFilterWindowSize,
|
/// <summary>
|
/// 中值滤波器窗口尺寸:枚举型,取值范围 {WindowSize_3, WindowSize_5, WindowSize_7, WindowSize_9}
|
/// </summary>
|
MedianFilterWindowSize,
|
/// <summary>
|
/// 空缺填充:整型
|
/// </summary>
|
GapFilling,
|
/// <summary>
|
/// 空缺填充边缘保持:整型
|
/// </summary>
|
GapFillingEdgePreservation,
|
/// <summary>
|
/// 重采样:枚举型,取值范围 {Nearest, Farthest }
|
/// </summary>
|
Resampling,
|
/// <summary>
|
/// 重采样边缘保持:整型
|
/// </summary>
|
ResamplingEdgePreservation,
|
/// <summary>
|
/// EnableZAxisAlignment-布尔型
|
/// </summary>
|
EnableZAxisAlignment,
|
/// <summary>
|
/// EnableXAxisAlignment-布尔型
|
/// </summary>
|
EnableXAxisAlignment,
|
/// <summary>
|
/// EnableBlindSpotFiltering-布尔型
|
/// </summary>
|
EnableBlindSpotFiltering,
|
/// <summary>
|
/// EnableNoiseRemoval-布尔型
|
/// </summary>
|
EnableNoiseRemoval,
|
/// <summary>
|
/// NoiseRemovalIntensity-_Enum = {Low, Medium, High}
|
/// </summary>
|
NoiseRemovalIntensity,
|
/// <summary>
|
/// 最小灰度:整型
|
/// </summary>
|
MinGrayscaleValue,
|
/// <summary>
|
/// 提取点最小强度:整型
|
/// </summary>
|
MinSpotIntensity,
|
/// <summary>
|
/// 提取点最大强度:整型
|
/// </summary>
|
MaxSpotIntensity,
|
/// <summary>
|
/// 激光线最小宽度:整型
|
/// </summary>
|
MinLaserLineWidth,
|
/// <summary>
|
/// 激光线最大宽度:整型
|
/// </summary>
|
MaxLaserLineWidth,
|
/// <summary>
|
/// 提取点选择:枚举型,取值范围 {Strongest, Nearest, Farthest, Invalid}
|
/// </summary>
|
SpotSelection,
|
/// <summary>
|
/// 枚举型,取值范围 {Center, TopEdge, BottomEdge }
|
/// </summary>
|
EdgeSelection,
|
/// <summary>
|
/// MinSharpness-_Int
|
/// </summary>
|
MinSharpness,
|
/// <summary>
|
/// BrightnessAdjustment-枚举型,取值范围 {Scale_0_5_0, Scale_0_7_5, Scale_1_0_0, Scale_1_5_0, Scale_1_5_0 }
|
/// </summary>
|
BrightnessAdjustment,
|
/// <summary>
|
/// 曝光模式:枚举型,取值范围 {HDR, Timed}
|
/// </summary>
|
ExposureMode,
|
/// <summary>
|
/// 曝光时间:整型
|
/// </summary>
|
ExposureTime,
|
/// <summary>
|
/// HDR曝光时间1:浮点型
|
/// </summary>
|
HdrExposureTimeProportion1,
|
/// <summary>
|
/// HDR曝光时间2:浮点型
|
/// </summary>
|
HdrExposureTimeProportion2,
|
/// <summary>
|
/// HdrFirstThreshold-浮点型
|
/// </summary>
|
HdrFirstThreshold,
|
/// <summary>
|
/// HdrSecondThreshold-浮点型
|
/// </summary>
|
HdrSecondThreshold,
|
/// <summary>
|
/// 模拟增益:枚举型,取值范围 {Gain_1_0, Gain_1_3, Gain_1_9, Gain_2_8, Gain_5_5}
|
/// </summary>
|
AnalogGain,
|
/// <summary>
|
/// 模拟增益(6030):枚举型,取值范围 {Gain_1_0, Gain_1_3, Gain_2_0, Gain_3_0}
|
/// </summary>
|
AnalogGainFor6030,
|
/// <summary>
|
/// 数字增益:整型
|
/// </summary>
|
DigitalGain,
|
/// <summary>
|
/// 激光功率:整型
|
/// </summary>
|
LaserPower,
|
/// <summary>
|
/// Z向感兴趣区域:枚举型,取值范围 {ImageHeight_1_1, ImageHeight_1_2, ImageHeight_1_4, ImageHeight_1_8, ImageHeight_1_16}
|
/// </summary>
|
ZDirectionRoi,
|
/// <summary>
|
/// 轮廓线兴趣区型
|
/// </summary>
|
ROI,
|
/// <summary>
|
/// 数据采集触发源:枚举型,取值范围 {Software, External}
|
/// </summary>
|
DataAcquisitionTriggerSource,
|
/// <summary>
|
/// 行扫描触发源:枚举型,取值范围 {FixedRate, Encoder}
|
/// </summary>
|
LineScanTriggerSource,
|
/// <summary>
|
/// 触发频率:浮点型
|
/// </summary>
|
SoftwareTriggerRate,
|
/// <summary>
|
/// MaxScanRate-浮点型
|
/// </summary>
|
MaxScanRate,
|
/// <summary>
|
/// TriggerDelay-_Int
|
/// </summary>
|
TriggerDelay,
|
/// <summary>
|
/// 触发方向:枚举型,取值范围 {ChannelALeading, ChannelBLeading, Both}
|
/// </summary>
|
EncoderTriggerDirection,
|
/// <summary>
|
/// 触发信号计数模式:枚举型,取值范围 {Multiple_1, Multiple_2, Multiple_4}
|
/// </summary>
|
EncoderTriggerSignalCountingMode,
|
/// <summary>
|
/// 触发间隔:整型
|
/// </summary>
|
EncoderTriggerInterval,
|
/// <summary>
|
/// 扫描行数:整型
|
/// </summary>
|
ScanLineCount,
|
/// <summary>
|
/// DataPointsPerProfile-_Int
|
/// </summary>
|
DataPointsPerProfile,
|
/// <summary>
|
/// ExposureDelay-_Int
|
/// </summary>
|
ExposureDelay,
|
/// <summary>
|
/// BatchRetrievalTimeout-_Int
|
/// </summary>
|
BatchRetrievalTimeout,
|
/// <summary>
|
/// CallbackRetrievalTimeout-_Int
|
/// </summary>
|
CallbackRetrievalTimeout,
|
/// <summary>
|
/// X轴分辨率:浮点型
|
/// </summary>
|
XAxisResolution,
|
/// <summary>
|
/// Y轴分辨率:浮点型
|
/// </summary>
|
YResolution,
|
/// <summary>
|
/// 倾斜校正角度:浮点型
|
/// </summary>
|
TiltCorrectionAngle,
|
/// <summary>
|
/// 高度校正比例:浮点型
|
/// </summary>
|
HeightCorrectionRatio,
|
/// <summary>
|
/// CoordinateTransformation-浮点型数组
|
/// </summary>
|
CoordinateTransformation,
|
/// <summary>
|
/// 名称 ID 最大值
|
/// </summary>
|
NameIdMax
|
}
|
}
|