You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

海康威视指纹阅读器SDK:FPModule_InstallMessageHandler调用方法咨询

使用海康威视指纹阅读器SDK的FPModule_InstallMessageHandler步骤

1. 实现消息回调函数

先写一个符合FpMessageHandler委托签名的方法,用来处理SDK发来的各类指纹事件,根据enMsgType区分不同消息,对pMsgData做对应解析:

// 类级别变量,保存委托引用,防止被GC回收
private static FpMessageHandler _fpMsgHandler;

private static void HandleFpMessages(FP_MSG_TYPE_T enMsgType, IntPtr pMsgData)
{
    switch (enMsgType)
    {
        case FP_MSG_TYPE_T.FP_MSG_PRESS_FINGER:
            Console.WriteLine("手指已按下,请保持稳定");
            break;
        case FP_MSG_TYPE_T.FP_MSG_RISE_FINGER:
            Console.WriteLine("手指已抬起");
            break;
        case FP_MSG_TYPE_T.FP_MSG_ENROLL_TIME:
            Console.WriteLine("正在录入指纹,请不要移动手指");
            break;
        case FP_MSG_TYPE_T.FP_MSG_CAPTURED_IMAGE:
            if (pMsgData != IntPtr.Zero)
            {
                // 将指针转换为FP_IMAGE_DATA结构体
                FP_IMAGE_DATA imageData = Marshal.PtrToStructure<FP_IMAGE_DATA>(pMsgData);
                // 灰度指纹图像的字节长度=宽度*高度
                int imageLength = imageData.dwWidth * imageData.dwHeight;
                // 从内存中复制图像字节数组
                imageData.pbyImage = new byte[imageLength];
                Marshal.Copy((IntPtr)pMsgData + Marshal.SizeOf<int>() * 2, imageData.pbyImage, 0, imageLength);
                
                // 此处可添加图像保存、特征提取等后续逻辑
                Console.WriteLine($"捕获指纹图像:{imageData.dwWidth}x{imageData.dwHeight}");
            }
            break;
    }
}

2. 安装消息处理器

在SDK初始化环节(比如设备连接成功后),创建委托实例并传入FPModule_InstallMessageHandler:

// 初始化委托引用
_fpMsgHandler = HandleFpMessages;
// 调用SDK方法安装处理器
int result = FPModule_InstallMessageHandler(_fpMsgHandler);
// 根据返回值判断是否成功,具体错误码参考SDK文档
if (result != 0)
{
    Console.WriteLine("安装消息处理器失败,错误码:" + result);
}

关键注意事项

  • 必须保留委托的类级别引用:如果仅在局部变量中创建委托,GC可能会回收它,导致SDK回调时触发异常。
  • 图像数据解析要匹配内存结构:原生SDK中FP_IMAGE_DATA的pbyImage是指针,无法直接通过结构体获取,需用Marshal.Copy从指定内存地址复制数据。
  • 程序退出或结束SDK使用时,若SDK提供卸载方法(如FPModule_UninstallMessageHandler),记得调用以避免内存泄漏。

内容的提问来源于stack exchange,提问作者Coder T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:35:29