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
{
///
/// PHM6000Sensor配置参数类
///
[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; } //激光功率
}
///
/// IsCustomAttribute
///
public class IsCustomAttribute : Attribute
{
}
///
/// EnumDownsampling
///
public enum EnumDownsampling
{
///
/// EnumDownsampling:X1=1
///
X1 = 1,
///
/// EnumDownsampling:X2=2
///
X2 = 2,
///
/// EnumDownsampling:X4=4
///
X4 = 4,
///
/// EnumDownsampling:X8=8
///
X8 = 8,
///
/// EnumDownsampling:X10=10
///
X10 = 10
}
///
/// EnumFilter
///
public enum EnumFilter
{
///
/// EnumFilter:None
///
None,
///
/// EnumFilter:Mean
///
Mean,
///
/// EnumFilter:MeanEdgePreserving
///
MeanEdgePreserving,
///
/// EnumFilter:Median
///
Median
}
///
/// EnumMeanFilterWindowSize
///
public enum EnumMeanFilterWindowSize
{
///
/// EnumMeanFilterWindowSize:WindowSize_2
///
WindowSize_2,
///
/// EnumMeanFilterWindowSize:WindowSize_4
///
WindowSize_4,
///
/// EnumMeanFilterWindowSize:WindowSize_8
///
WindowSize_8,
///
/// EnumMeanFilterWindowSize:WindowSize_16
///
WindowSize_16,
///
/// EnumMeanFilterWindowSize:WindowSize_32
///
WindowSize_32
}
///
/// EnumMedianFilterWindowSize
///
public enum EnumMedianFilterWindowSize
{
///
/// EnumMedianFilterWindowSize:WindowSize_3
///
WindowSize_3,
///
/// EnumMedianFilterWindowSize:WindowSize_5
///
WindowSize_5,
///
/// EnumMedianFilterWindowSize:WindowSize_7
///
WindowSize_7,
///
/// EnumMedianFilterWindowSize:WindowSize_9
///
WindowSize_9
}
///
/// EnumResampling
///
public enum EnumResampling
{
///
/// EnumResampling:Nearest
///
Nearest,
///
/// EnumResampling:Farthest
///
Farthest
}
///
/// EnumSpotSelection
///
public enum EnumSpotSelection
{
///
/// EnumSpotSelection:Strongest
///
Strongest,
///
/// EnumSpotSelection:Nearest
///
Nearest,
///
/// EnumSpotSelection:Farthest
///
Farthest,
///
/// EnumSpotSelection:Invalid
///
Invalid
}
///
/// EnumEdgeSelection
///
public enum EnumEdgeSelection
{
///
/// EnumEdgeSelection:Center
///
Center,
///
/// EnumEdgeSelection:TopEdge
///
TopEdge,
///
/// EnumEdgeSelection:BottomEdge
///
BottomEdge
}
///
/// EnumBrightnessAdjustment
///
public enum EnumBrightnessAdjustment
{
///
/// EnumBrightnessAdjustment:Scale_0_5_0
///
Scale_0_5_0,
///
/// EnumBrightnessAdjustment:Scale_0_7_5
///
Scale_0_7_5,
///
/// EnumBrightnessAdjustment:Scale_1_0_0
///
Scale_1_0_0,
///
/// EnumBrightnessAdjustment:Scale_1_5_0
///
Scale_1_5_0
}
///
/// EnumExposureMode
///
public enum EnumExposureMode
{
///
/// EnumExposureMode:HDR
///
HDR,
///
/// EnumExposureMode:Timed
///
Timed
}
///
/// EnumAnalogGain
///
public enum EnumAnalogGain
{
///
/// EnumAnalogGain:Gain_1_0
///
Gain_1_0,
///
/// EnumAnalogGain:Gain_1_3
///
Gain_1_3,
///
/// EnumAnalogGain:Gain_1_9
///
Gain_1_9,
///
/// EnumAnalogGain:Gain_2_8
///
Gain_2_8,
///
/// EnumAnalogGain:Gain_5_5
///
Gain_5_5
}
///
/// EnumAnalogGainFor8030
///
public enum EnumAnalogGainFor6030
{
///
/// EnumAnalogGainFor6030:Gain_1_0
///
Gain_1_0,
///
/// EnumAnalogGainFor6030:Gain_1_3
///
Gain_1_3,
///
/// EnumAnalogGainFor6030:Gain_2_0
///
Gain_2_0,
///
/// EnumAnalogGainFor6030:Gain_3_0
///
Gain_3_0
}
///
/// EnumZDirectionRoi
///
public enum EnumZDirectionRoi
{
///
/// EnumZDirectionRoi:ImageHeight_1_1
///
ImageHeight_1_1,
///
/// EnumZDirectionRoi:ImageHeight_1_2
///
ImageHeight_1_2,
///
/// EnumZDirectionRoi:ImageHeight_1_4
///
ImageHeight_1_4,
///
/// EnumZDirectionRoi:ImageHeight_1_8
///
ImageHeight_1_8,
///
/// EnumZDirectionRoi:ImageHeight_1_16
///
ImageHeight_1_16
}
///
/// EnumDataAcquisitionTriggerSource
///
public enum EnumDataAcquisitionTriggerSource
{
///
/// EnumDataAcquisitionTriggerSource:软触发
///
软触发,
///
/// EnumDataAcquisitionTriggerSource:外部触发
///
外部触发
}
///
/// EnumLineScanTriggerSource
///
public enum EnumLineScanTriggerSource
{
///
/// EnumLineScanTriggerSource:固定频率
///
固定频率,
///
/// EnumLineScanTriggerSource:编码器
///
编码器
}
///
/// EnumEncoderTriggerDirection
///
public enum EnumEncoderTriggerDirection
{
///
/// EnumEncoderTriggerDirection:A相在前
///
A相在前,
///
/// EnumEncoderTriggerDirection:B相在前
///
B相在前,
///
/// EnumEncoderTriggerDirection:双向
///
双向
}
///
/// EnumEncoderTriggerSignalCountingMode
///
public enum EnumEncoderTriggerSignalCountingMode
{
///
/// EnumEncoderTriggerSignalCountingMode:X1
///
X1,
///
/// EnumEncoderTriggerSignalCountingMode:X2
///
X2,
///
/// EnumEncoderTriggerSignalCountingMode:X4
///
X4
}
///
/// EnumEncoderTriggerSignalCountingMode
///
public enum EnumNoiseRemovalIntensity
{
///
/// EnumNoiseRemovalIntensity--Low
///
Low,
///
/// EnumNoiseRemovalIntensity--Medium
///
Medium,
///
/// EnumNoiseRemovalIntensity--High
///
High
}
///
/// EnumNameId,参数名称定义
///
public enum EnumNameId
{
///
/// 滤波器:枚举型,取值范围 {None, Mean, MeanEdgePreserving, Median }
///
Filter,
///
/// 均值滤波器窗口尺寸:枚举型,取值范围 {WindowSize_2, WindowSize_4, WindowSize_8, WindowSize_16, WindowSize_32}
///
MeanFilterWindowSize,
///
/// 中值滤波器窗口尺寸:枚举型,取值范围 {WindowSize_3, WindowSize_5, WindowSize_7, WindowSize_9}
///
MedianFilterWindowSize,
///
/// 空缺填充:整型
///
GapFilling,
///
/// 空缺填充边缘保持:整型
///
GapFillingEdgePreservation,
///
/// 重采样:枚举型,取值范围 {Nearest, Farthest }
///
Resampling,
///
/// 重采样边缘保持:整型
///
ResamplingEdgePreservation,
///
/// EnableZAxisAlignment-布尔型
///
EnableZAxisAlignment,
///
/// EnableXAxisAlignment-布尔型
///
EnableXAxisAlignment,
///
/// EnableBlindSpotFiltering-布尔型
///
EnableBlindSpotFiltering,
///
/// EnableNoiseRemoval-布尔型
///
EnableNoiseRemoval,
///
/// NoiseRemovalIntensity-_Enum = {Low, Medium, High}
///
NoiseRemovalIntensity,
///
/// 最小灰度:整型
///
MinGrayscaleValue,
///
/// 提取点最小强度:整型
///
MinSpotIntensity,
///
/// 提取点最大强度:整型
///
MaxSpotIntensity,
///
/// 激光线最小宽度:整型
///
MinLaserLineWidth,
///
/// 激光线最大宽度:整型
///
MaxLaserLineWidth,
///
/// 提取点选择:枚举型,取值范围 {Strongest, Nearest, Farthest, Invalid}
///
SpotSelection,
///
/// 枚举型,取值范围 {Center, TopEdge, BottomEdge }
///
EdgeSelection,
///
/// MinSharpness-_Int
///
MinSharpness,
///
/// BrightnessAdjustment-枚举型,取值范围 {Scale_0_5_0, Scale_0_7_5, Scale_1_0_0, Scale_1_5_0, Scale_1_5_0 }
///
BrightnessAdjustment,
///
/// 曝光模式:枚举型,取值范围 {HDR, Timed}
///
ExposureMode,
///
/// 曝光时间:整型
///
ExposureTime,
///
/// HDR曝光时间1:浮点型
///
HdrExposureTimeProportion1,
///
/// HDR曝光时间2:浮点型
///
HdrExposureTimeProportion2,
///
/// HdrFirstThreshold-浮点型
///
HdrFirstThreshold,
///
/// HdrSecondThreshold-浮点型
///
HdrSecondThreshold,
///
/// 模拟增益:枚举型,取值范围 {Gain_1_0, Gain_1_3, Gain_1_9, Gain_2_8, Gain_5_5}
///
AnalogGain,
///
/// 模拟增益(6030):枚举型,取值范围 {Gain_1_0, Gain_1_3, Gain_2_0, Gain_3_0}
///
AnalogGainFor6030,
///
/// 数字增益:整型
///
DigitalGain,
///
/// 激光功率:整型
///
LaserPower,
///
/// Z向感兴趣区域:枚举型,取值范围 {ImageHeight_1_1, ImageHeight_1_2, ImageHeight_1_4, ImageHeight_1_8, ImageHeight_1_16}
///
ZDirectionRoi,
///
/// 轮廓线兴趣区型
///
ROI,
///
/// 数据采集触发源:枚举型,取值范围 {Software, External}
///
DataAcquisitionTriggerSource,
///
/// 行扫描触发源:枚举型,取值范围 {FixedRate, Encoder}
///
LineScanTriggerSource,
///
/// 触发频率:浮点型
///
SoftwareTriggerRate,
///
/// MaxScanRate-浮点型
///
MaxScanRate,
///
/// TriggerDelay-_Int
///
TriggerDelay,
///
/// 触发方向:枚举型,取值范围 {ChannelALeading, ChannelBLeading, Both}
///
EncoderTriggerDirection,
///
/// 触发信号计数模式:枚举型,取值范围 {Multiple_1, Multiple_2, Multiple_4}
///
EncoderTriggerSignalCountingMode,
///
/// 触发间隔:整型
///
EncoderTriggerInterval,
///
/// 扫描行数:整型
///
ScanLineCount,
///
/// DataPointsPerProfile-_Int
///
DataPointsPerProfile,
///
/// ExposureDelay-_Int
///
ExposureDelay,
///
/// BatchRetrievalTimeout-_Int
///
BatchRetrievalTimeout,
///
/// CallbackRetrievalTimeout-_Int
///
CallbackRetrievalTimeout,
///
/// X轴分辨率:浮点型
///
XAxisResolution,
///
/// Y轴分辨率:浮点型
///
YResolution,
///
/// 倾斜校正角度:浮点型
///
TiltCorrectionAngle,
///
/// 高度校正比例:浮点型
///
HeightCorrectionRatio,
///
/// CoordinateTransformation-浮点型数组
///
CoordinateTransformation,
///
/// 名称 ID 最大值
///
NameIdMax
}
}