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