5.8 KiB
SI-M1 Face SDK 配置与 Editor 工具
SDK 使用 FaceSdkSettings 作为推荐配置方式。该配置是 ScriptableObject,可在项目中复用,并可同步到场景中的 FaceModuleManager。
1. 默认配置资产
默认路径:
Assets/Resources/AISU/SI-M1 Face SDK/FaceSdkSettings.asset
打开菜单 AISU/SI-M1 Face SDK/Settings 后,Editor 会加载该路径。若文件不存在,点击 Load Default 会创建默认资产。
2. FaceSdkSettings 字段
| 字段 | 类型 | 说明 |
|---|---|---|
TransportMode |
FaceTransportMode |
通信模式:Auto、SerialPort、Mock |
UseMockInEditor |
bool |
Editor 下是否强制使用 Mock |
PortName |
string |
Player / 运行时串口号 |
BaudRate |
int |
Player / 运行时波特率 |
ReadBufferSize |
int |
Player / 运行时读取缓冲区 |
UseEditorSerialDebugParameters |
bool |
Editor 下连接真实串口时是否使用单独参数 |
EditorPortName |
string |
Editor 调试串口号 |
EditorBaudRate |
int |
Editor 调试波特率 |
EditorReadBufferSize |
int |
Editor 调试读取缓冲区 |
MockResponseDelayFrames |
int |
Mock 响应延迟帧数 |
AutoVerifyOnOpen |
bool |
READY 后是否自动开启验证 |
AutoVerifyTimeout |
byte |
自动验证协议超时时间,单位秒 |
AutoVerifyResultIntervalMs |
int |
自动验证结果最小派发间隔,0 表示不节流 |
StopAutoVerifyBeforeExclusiveCommand |
bool |
独占业务命令前是否自动关闭自动验证 |
ExclusiveCommandPolicy |
FaceExclusiveCommandPolicy |
自动验证开启时的独占命令处理策略 |
DebugLogEnabled |
bool |
是否启用 SDK Debug 日志 |
RawLogEnabled |
bool |
是否派发原始 TX / RX 日志 |
LogPrefix |
string |
日志前缀 |
3. TransportMode 选择
| 模式 | 行为 |
|---|---|
Auto |
Editor 根据 UseMockInEditor 选择 Mock 或串口;Player 使用串口 |
SerialPort |
使用 SerialPortTransport |
Mock |
使用 MockFaceModuleTransport |
Editor 下有一个额外优先级:
UseMockInEditor = true 时,强制使用 Mock,不打开真实串口。
因此 Editor 中如果需要连接真实串口,必须将 UseMockInEditor 设为 false。
4. Editor Serial Debug 参数
Editor 连接真实硬件时,建议开启:
UseEditorSerialDebugParameters = true
开启后,Editor 中串口使用:
EditorPortNameEditorBaudRateEditorReadBufferSize
Player 中仍使用:
PortNameBaudRateReadBufferSize
这样可以避免 Editor 调试口和发布运行口互相覆盖。
5. Editor 工具按钮
配置窗口按钮:
| 按钮 | 行为 |
|---|---|
Load Default |
固定加载或创建默认路径的 FaceSdkSettings.asset |
Save |
保存当前配置并同步场景中的 Manager |
Save and Create/Update Manager |
保存配置后创建或更新场景 Manager |
同步 Manager 时会写入:
m_settingsm_config.TransportModem_config.UseMockInEditor- 串口参数
- Editor 串口参数
- Mock 延迟
- 自动验证配置
- Raw Log 开关
PlayMode 中同步配置时,会调用 FaceModuleManager.ApplySettings(settings),立即重建当前 transport。
6. Manager 配置方式
推荐方式:
manager.ApplySettings(settings);
manager.Open();
兼容方式:
manager.Configure(useMockInEditor: true, portName: "COM3", baudRate: 115200);
manager.Open();
外部通信层注入:
manager.ConfigureTransport(customTransport);
manager.Open();
7. 场景约束
每个场景建议只保留一个 FaceModuleManager。
多个 Manager 可能导致:
- 多次打开同一串口。
- 重复接收和派发事件。
- UI 状态不一致。
Create Manager GameObject 菜单会校验 Manager 数量,并在存在多个 Manager 时停止创建。
8. 自动验证配置
AutoVerifyTimeout 是发送给模组的协议超时时间,不是结果间隔。
AutoVerifyResultIntervalMs 是 Unity SDK 侧的事件节流间隔。自动验证开启后,硬件可能持续通过 NOTE 上报识别结果,SDK 会按该间隔派发 OnAutoVerifyResult,避免 UI 或业务层被连续结果刷爆。
关闭连接时,FaceModuleManager.Close() 和 CloseAsync() 会先尝试关闭自动验证,再执行 FaceResetAsync(),最后关闭串口。OnApplicationQuit() 也会走同一套安全关闭流程,避免应用退出后硬件继续检测。
9. 独占命令策略
自动验证开启后,模组会持续进行检测。录入、删除、查询、照片注册等业务命令可能与自动验证互相冲突。FaceExclusiveCommandPolicy 用于控制 SDK 在执行这些命令前如何处理自动验证状态。
| 值 | 行为 | 适用场景 |
|---|---|---|
RejectWhenAutoVerifyEnabled |
自动验证开启时直接拒绝独占命令 | 希望业务层显式控制状态切换 |
StopAutoVerify |
SDK 在独占命令前自动关闭自动验证 | 默认推荐,减少业务层重复处理 |
Ignore |
SDK 不处理自动验证状态 | 调试或自定义流程,业务层自行保证不冲突 |
10. 运行时状态码入口
配置项会影响以下运行时状态和返回值,详细枚举表见 SDK_API_Reference.md。
| 类型 | 使用位置 | 说明 |
|---|---|---|
FaceResultCode |
ResultCode、OnError、FaceCommandException |
命令和业务结果码 |
FaceStateCode |
OnFaceStateUpdated |
人脸位置、遮挡、闭眼等状态 |
FaceModuleStatus |
CurrentStatus、GetStatusAsync() |
模组待机、忙碌、错误状态 |
FaceTransportMode |
FaceSdkSettings.TransportMode |
通信模式 |
FaceExclusiveCommandPolicy |
FaceSdkSettings.ExclusiveCommandPolicy |
自动验证与独占命令冲突策略 |