设备SDK封装应统一调用约定,同时保留设备之间真实存在的差异。接口名称一致,不能替代参数语义、缓冲所有权和错误状态的定义。以下为适配层设计方法,不代表任意设备已经完成统一接入。
参数模型先定义语义
| 字段 | 应表达的信息 | 需要避免的问题 |
|---|---|---|
| 参数标识 | 业务名称、设备映射及适用模式 | 同名参数在不同设备上含义不同 |
| 类型和单位 | 整数、浮点、枚举、布尔以及明确单位 | 直接复制数值造成单位错误 |
| 访问能力 | 只读、可写、动态范围与依赖状态 | 采集中写入不允许修改的参数 |
| 枚举与缺省值 | 实际支持项和读取结果 | 把未支持项默认为成功 |
| 生效条件 | 是否停采、重启或重连后生效 | 设置返回后立即假定图像已采用新值 |
不要只做字段重命名。对于不支持的功能,应返回可辨识状态;对于可转换的单位,应规定换算和舍入。设置参数后的回读、设备状态和图像变化,按目标SDK能力验证。
帧数据的生命周期
接口文档应写明缓冲由设备SDK、适配层还是调用方分配,调用方能读取到何时,何时必须释放或归还,是否允许跨线程及是否发生内存复制。图像宽高、格式、行跨度和有效长度共同描述数据,不能假定每行紧密排列。
异步回调中返回的指针,不能在未确认生命周期时交给长期运行的下游任务。停止采集、断连和销毁设备时,还需定义未处理帧、排队回调与资源回收的顺序。
状态与错误来源
建议区分未连接、已连接、已配置、采集中、停止中和故障等状态,并记录允许的调用与转换条件。超时、设备断连、参数不支持、缓冲不足和解析失败应分别表达。统一错误码的同时保留原厂错误码和上下文,便于定位问题。
验证接口而不只验证示例
按具体设备与版本检查参数边界、重复启停、无帧超时、缓冲归还、并发调用和断连恢复。对无法注入或设备不支持的故障,记录未验证原因。交付接口说明、错误码表、构建与示例及约定的测试记录。