9.4 KiB
9.4 KiB
SI-M1 Face SDK 接口文档
本文列出 SDK 对业务层推荐使用的公开 API。命名空间统一为 Aisu.SIM1.Face.*。
1. 命名空间
| 命名空间 | 说明 |
|---|---|
Aisu.SIM1.Face.Core |
Manager、配置、回调适配、日志、主线程调度 |
Aisu.SIM1.Face.Commands |
业务服务、命令服务、加密接口 |
Aisu.SIM1.Face.Protocol |
协议枚举、封包、拆包、编码工具 |
Aisu.SIM1.Face.Transport |
通信接口、串口、Mock |
Aisu.SIM1.Face.Models |
Reply、Note、用户、验证、录入、图片、UVC 等模型 |
2. FaceModuleManager
FaceModuleManager 是 SDK 推荐的统一入口。
using Aisu.SIM1.Face.Core;
属性
| 属性 | 类型 | 说明 |
|---|---|---|
Basic |
FaceBasicService |
基础命令服务 |
Verify |
FaceVerifyService |
人脸验证服务 |
Enrollment |
FaceEnrollmentService |
人脸录入服务 |
Users |
FaceUserService |
用户管理服务 |
QrCode |
FaceQrCodeService |
二维码服务 |
Images |
FaceImageService |
图片抓拍与照片注册服务 |
Features |
FaceFeatureService |
特征读写服务 |
Uvc |
FaceUvcService |
UVC 和高级参数服务 |
Encryption |
FaceEncryptionService |
加密相关服务 |
Callback |
FaceModuleCallbackAdapter |
回调式 API 适配 |
IsOpen |
bool |
通信是否打开 |
IsReady |
bool |
是否收到 READY |
CurrentStatus |
FaceModuleStatus |
当前模组状态 |
LastError |
string |
最近错误文本 |
CurrentCommand |
string |
当前命令名 |
Config |
FaceModuleConfig |
当前运行配置 |
Settings |
FaceSdkSettings |
当前绑定配置资产 |
方法
| 方法 | 说明 |
|---|---|
ConfigureTransport(IFaceModuleTransport transport) |
注入自定义通信层 |
Configure(bool useMockInEditor, string portName, int baudRate) |
兼容旧代码的快速配置入口 |
ApplySettings(FaceSdkSettings sdkSettings) |
应用 ScriptableObject 配置并重建 transport |
Open() |
打开通信 |
Close() |
关闭通信 |
WaitReadyAsync(int timeoutMs = 5000) |
等待 READY NOTE |
ProbeReadyByStatusAsync() |
主动查询状态并标记 READY |
SendRawBytes(byte[] bytes) |
发送原始协议 bytes |
RefreshStatus() |
异步刷新 CurrentStatus |
事件
| 事件 | 说明 |
|---|---|
OnReady |
首次 READY |
OnStatusChanged(FaceModuleStatus) |
当前状态变化 |
OnReplyReceived(FaceReply) |
收到 REPLY 包 |
OnNoteReceived(FaceNote) |
收到 NOTE 包 |
OnFaceStateUpdated(FaceFaceStateNote) |
收到人脸状态 NOTE |
OnQrCodeReceived(string) |
收到二维码 NOTE |
OnFeatureReceived(byte[]) |
收到读取特征数据包 |
OnDataPacketReceived(FacePacket) |
收到 ImageOrTemplate 数据包 |
OnError(FaceResultCode, string) |
错误上报 |
OnRawLog(string) |
原始 TX / RX 日志 |
3. 基础服务 FaceBasicService
访问路径:
manager.Basic
| 方法 | 返回 | 说明 |
|---|---|---|
ResetAsync() |
Task<FaceReply> |
复位模组 |
FaceResetAsync() |
Task<FaceReply> |
取消当前人脸流程 |
GetStatusAsync() |
Task<FaceModuleStatus> |
获取模组状态 |
GetVersionAsync() |
Task<string> |
获取固件版本 |
GetSnAsync() |
Task<string> |
获取设备序列号 |
SetDemoModeAsync(bool enable) |
Task<FaceReply> |
设置 Demo Mode |
UpgradeFirmwareAsync() |
Task<FaceReply> |
启动固件升级命令 |
4. 验证服务 FaceVerifyService
访问路径:
manager.Verify
| 方法 | 返回 | 说明 |
|---|---|---|
VerifyAsync(byte timeout, byte maxRecognitionTimes = 30) |
Task<FaceVerifyResult> |
单次人脸验证 |
AutoVerifyAsync(bool enable, byte timeout) |
Task<FaceVerifyResult> |
启用或关闭自动验证 |
5. 录入服务 FaceEnrollmentService
访问路径:
manager.Enrollment
| 方法 | 返回 | 说明 |
|---|---|---|
EnrollAsync(bool admin, string userName, FaceDirection direction, byte timeout) |
Task<FaceEnrollResult> |
交互式多方向录入 |
EnrollSingleAsync(bool admin, string userName, byte timeout) |
Task<FaceEnrollResult> |
单帧录入 |
EnrollIntegratedAsync(bool admin, string userName, FaceDirection direction, byte timeout, bool singleFrame = false, bool duplicateCheck = true) |
Task<FaceEnrollResult> |
集成式录入 |
EnrollSnapFaceImageAsync(bool admin, string userName) |
Task<FaceEnrollResult> |
抓拍人脸后注册 |
6. 用户服务 FaceUserService
访问路径:
manager.Users
| 方法 | 返回 | 说明 |
|---|---|---|
DeleteUserAsync(int userId) |
Task<FaceReply> |
删除指定用户 |
DeleteAllAsync() |
Task<FaceReply> |
删除全部用户 |
GetUserInfoAsync(int userId) |
Task<FaceUserInfo> |
查询用户信息 |
GetAllUserIdsAsync() |
Task<List<int>> |
查询用户 ID 列表 |
GetAllUserIds2Async() |
Task<List<int>> |
使用扩展命令查询用户 ID 列表 |
GetAllUserInfosAsync() |
Task<List<FaceUserInfo>> |
查询全部用户详情 |
GetAllUserInfos2Async() |
Task<List<FaceUserInfo>> |
使用扩展命令查询全部用户详情 |
7. 二维码服务 FaceQrCodeService
访问路径:
manager.QrCode
| 方法 | 返回 | 说明 |
|---|---|---|
ScanQrCodeAsync(byte timeout) |
Task<string> |
扫描二维码并返回内容 |
8. 图片服务 FaceImageService
访问路径:
manager.Images
| 方法 | 返回 | 说明 |
|---|---|---|
SnapUploadImageAsync() |
Task<FaceImageResult> |
抓拍普通图片 |
SnapUploadFaceImageAsync() |
Task<FaceImageResult> |
抓拍人脸图片 |
SnapUploadLargeImageAsync(ImageDpi dpi) |
Task<FaceImageResult> |
抓拍大图 |
EnrollWithPhotoAsync(byte[] photoBytes, BioType type, string userName = null, bool duplicateCheck = true, Action<int, int> onProgress = null) |
Task<FaceEnrollResult> |
照片注册 |
EnrollWithPhotoAndIdAsync(int userId, byte[] photoBytes, BioType type, string userName = null, bool duplicateCheck = true, Action<int, int> onProgress = null) |
Task<FaceEnrollResult> |
指定用户 ID 照片注册 |
9. 特征服务 FaceFeatureService
访问路径:
manager.Features
| 方法 | 返回 | 说明 |
|---|---|---|
ReadFeatureAsync(int userId, FeatureType type) |
Task<byte[]> |
读取指定用户特征 |
WriteFeatureAsync(byte[] featureBytes, FeatureType type, string userName = null, Action<int, int> onProgress = null) |
Task<FaceEnrollResult> |
写入特征并注册 |
10. UVC 和高级参数 FaceUvcService
访问路径:
manager.Uvc
| 方法 | 返回 | 说明 |
|---|---|---|
ReadUsbUvcParametersAsync() |
Task<UsbUvcParameters> |
读取 USB / UVC 参数 |
SetUsbUvcParametersAsync(UsbUvcParameters parameters) |
Task<FaceReply> |
设置 USB / UVC 参数 |
SetFaceLocationDisplayAsync(bool visible) |
Task<FaceReply> |
设置人脸框显示 |
SetRgbLevelAsync(byte level) |
Task<FaceReply> |
设置 RGB 阈值 |
SetDuplicateCheckAsync(bool enableCheck) |
Task<FaceReply> |
设置查重 |
ReadDuplicateCheckAsync() |
Task<bool> |
读取查重状态 |
11. 加密服务 FaceEncryptionService
访问路径:
manager.Encryption
| 方法 | 返回 | 说明 |
|---|---|---|
SetReleaseEncryptionKeyAsync(byte[] key16) |
Task<FaceReply> |
设置 Release 加密密钥 |
SetDebugEncryptionKeyAsync(byte[] key16) |
Task<FaceReply> |
设置 Debug 加密密钥 |
InitEncryptionAsync(byte[] seed4, byte mode) |
Task<FaceReply> |
初始化加密流程 |
EnableEncryption(IFaceModuleCrypto crypto) |
void |
设置本地加密算法适配器 |
DisableEncryption() |
void |
关闭本地加密算法适配器 |
IFaceModuleCrypto:
public interface IFaceModuleCrypto
{
byte[] Encrypt(byte[] plainBytes);
byte[] Decrypt(byte[] encryptedBytes);
byte[] GenerateSessionKey(byte[] seed4, byte[] encKey16);
}
12. 回调式 API
FaceModuleManager.Callback 适合 Unity Button、旧项目回调风格或不方便使用 await 的业务。
manager.Callback.Verify(
timeout: 10,
success: result => Debug.Log(result.UserId),
error: message => Debug.LogError(message));
回调特点:
- 所有 API 统一使用
success和error。 - 照片注册、特征写入支持
progress(current, total)。 - 回调会通过
FaceModuleMainThreadDispatcher回到 Unity 主线程。
13. 主要模型
| 类型 | 说明 |
|---|---|
FaceReply |
REPLY 包解析结果 |
FaceNote |
NOTE 包解析结果 |
FaceFaceStateNote |
人脸状态 NOTE |
FaceUserInfo |
用户 ID、姓名、管理员标记 |
FaceVerifyResult |
验证结果、用户信息、开锁状态 |
FaceEnrollResult |
录入结果、用户 ID、方向 |
FaceImageResult |
图片 bytes、Texture2D、用户 ID |
UsbUvcParameters |
USB / UVC 参数 |
FaceCommandException |
命令 REPLY 非成功时抛出的异常 |
14. 协议和通信底层
业务层通常不需要直接使用底层 API。需要协议调试或自定义通信时可使用:
| 类型 | 说明 |
|---|---|
FacePacketBuilder |
封包 |
FacePacketParser |
拆包 |
FaceProtocolEncoding |
用户名、ID、结果文本等编码工具 |
IFaceModuleTransport |
通信接口 |
SerialPortTransport |
串口实现 |
MockFaceModuleTransport |
Mock 实现 |