1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
using Bro.Common.Base;
using Bro.Common.Helper;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;
using System.Collections;
using MvCamCtrl.NET;
using System.Runtime.InteropServices;
using System.Drawing.Design;
 
namespace Bro.Device.HikCamera
{
    [Device("HikCamera", "海康相机", EnumHelper.DeviceAttributeType.OperationConfig)]
    public class HikCameraOperationConfig : HalconRelatedCameraOprerationConfigBase
    {
    }
 
    public class HikCameraDeviceConfig : CameraDeviceConfigBase
    {
    }
 
    [Device("HikCamera", "海康相机", EnumHelper.DeviceAttributeType.InitialConfig)]
    public class HikCameraInitialConfig : HalconRelatedCameraInitialConfigBase, INotifyPropertyChanged
    {
        [Category("采图模式")]
        [Description("是否连续模式。true:连续模式采图;false:触发模式采图")]
        public bool IsContinueMode { get; set; } = false;
 
        private bool isHardwareTrigger = false;
        [Category("采图模式")]
        [Description("是否硬触发模式。true:硬触发;false:软触发")]
        public bool IsHardwareTrigger
        {
            get => isHardwareTrigger;
            set
            {
                if (isHardwareTrigger != value)
                {
                    isHardwareTrigger = value;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsHardwareTrigger"));
                }
            }
        }
 
        public event PropertyChangedEventHandler PropertyChanged;
    }
 
    public class HikCameraInputConfig : CameraInputConfigBase
    {
    }
 
    //public class HikCameraTypeConvert : ComboBoxItemTypeConvert
    //{
    //    public override void GetConvertHash()
    //    {
    //        _hash.Add("1", "GIGE");
    //        _hash.Add("4", "USB");
    //    }
    //}
 
    //public class HikSerialNumConvert : StringConverter
    //{
    //    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    //    {
    //        return true;
    //    }
 
    //    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    //    {
    //        List<string> serialNumList = new List<string>();
    //        MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList = default(MyCamera.MV_CC_DEVICE_INFO_LIST);
 
    //        int nRet = CameraOperator.EnumDevices(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_pDeviceList);
    //        if (0 != nRet)
    //        {
    //            return null;
    //        }
 
    //        for (int i = 0; i < m_pDeviceList.nDeviceNum; i++)
    //        {
    //            MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_pDeviceList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO));
    //            if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
    //            {
    //                IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stGigEInfo, 0);
    //                MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
    //                serialNumList.Add(gigeInfo.chSerialNumber);
 
    //            }
    //            else if (device.nTLayerType == MyCamera.MV_USB_DEVICE)
    //            {
    //                IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stUsb3VInfo, 0);
    //                MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_USB3_DEVICE_INFO));
    //                serialNumList.Add(usbInfo.chSerialNumber);
    //            }
    //        }
 
    //        return new StandardValuesCollection(serialNumList);
    //    }
    //}
}