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 } }