using System; using System.Runtime.InteropServices; using System.Text; namespace AutoFocusTool.Camera { /// /// Microview MVC2000 USB2.0 相机 SDK 的 P/Invoke 声明。 /// DLL 路径相对工作目录:DependFile\ccd\mvcapi.dll(随生成复制到输出目录)。 /// 仅保留自动对焦测试程序需要的函数,抄自原工程 MVCAPI.cs。 /// public static class MVCAPI { public delegate void LPMV_CALLBACK2(IntPtr lpParam, IntPtr lpUser); public const short ResSuccess = 0x0000; public const int WS_CHILD = 0x40000000; public const int WS_VISIBLE = 0x10000000; private const string DLL = @"DependFile\ccd\mvcapi.dll"; /// 初始化第 index 台型号为 pFilterName 的相机,返回 0 成功,得句柄 hImager [DllImport(DLL)] public static extern int MV_Usb2Init(string pFilterName, out int index, ref CapInfoStruct pCapInfo, out IntPtr hImager); /// 读取相机序列号 [DllImport(DLL)] public static extern int MV_Usb2GetSerial(IntPtr hImager, StringBuilder number); /// 卸载相机 [DllImport(DLL)] public static extern int MV_Usb2Uninit(ref IntPtr hImager); /// 设置采集模式:nMode 0=拍照(单帧) 1=实时图像 [DllImport(DLL)] public static extern int MV_Usb2SetOpMode(IntPtr hImager, byte nMode, bool bStrobe); /// 下发部分采集参数(曝光、增益) [DllImport(DLL)] public static extern int MV_Usb2SetPartOfCapInfo(IntPtr hImager, ref CapInfoStruct pCapInfo); /// 抓取一帧 RGB 图,写入 pDest(width*height*3 字节,24bpp) [DllImport(DLL)] public static extern int MV_Usb2GetRgbData(IntPtr hImager, ref CapInfoStruct pCapInfo, IntPtr pDest); /// 抓取一帧 Raw 数据,写入 pCapInfo.Buffer [DllImport(DLL)] public static extern int MV_Usb2GetRawData(IntPtr hImager, ref CapInfoStruct pCapInfo); /// Raw → RGB 去马赛克 [DllImport(DLL)] public static extern int MV_Usb2ConvertRawToRgb(IntPtr hImager, IntPtr pSrc, int width, int height, IntPtr pDest); /// 获取帧率 [DllImport(DLL)] public static extern int MV_Usb2GetFrameRate(IntPtr hImager, out float nRate); } }