摄像头控制接口文档(指令码:015)
功能描述:通过指令码
015控制摄像头设备,支持获取设备列表、拍照、旋转、缩放、翻转等操作
通信方式:JSON 消息(如 WebSocket、IPC 消息通道)
最后更新:2025年9月15日
适用系统:体检终端设备控制系统(.NET 平台)
一、请求 JSON 格式
{"Code": "015","ParamStr": "{\"OperaCode\": 13, \"CameraIndex\": 0, \"CameraValue\": 1}"}
字段说明
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Code |
string |
✅ 是 | 固定为 "015",表示摄像头控制指令 |
ParamStr |
string |
✅ 是 | 操作参数的 JSON 字符串,需进行反序列化解析 |
ParamStr 内部结构(对应 CameraParamDto)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
OperaCode |
int |
✅ 是 | 操作指令码,决定执行的具体行为 |
CameraIndex |
int |
✅ 否 | 摄像头设备索引(从 0 开始),默认0 |
CameraValue |
int |
❌ 否 | 参数值,部分操作需要(如开关、分辨率索引) |
二、操作码(OperaCode)说明
| OperaCode | 常量名 | 功能描述 | 是否需要 CameraValue |
示例值 |
|---|---|---|---|---|
| 0 | CameraList |
获取所有可用摄像头名称列表 | ❌ 否 | - |
| 1 | CameraResList |
获取指定摄像头支持的分辨率列表 | ❌ 否 | - |
| 2 | SetResolution |
设置摄像头分辨率 | ✅ 是(分辨率索引) | 2 表示第3个分辨率 |
| 3 | OpenCamera |
打开指定摄像头 | ❌ 否 | - |
| 4 | CloseCamera |
关闭指定摄像头 | ❌ 否 | - |
| 5 | RotateLeft |
图像向左旋转 90° | ❌ 否 | - |
| 6 | RotateRight |
图像向右旋转 90° | ❌ 否 | - |
| 7 | ZoomIn |
图像放大 | ❌ 否 | - |
| 8 | ZoomOut |
图像缩小 | ❌ 否 | - |
| 9 | EnableAutoCrop |
启用自动裁剪功能 | ✅ 是(1=启用,0=禁用) |
1 |
| 10 | SetHFlip |
设置水平翻转(镜像) | ✅ 是(1=启用,0=禁用) |
1 |
| 11 | SetVFlip |
设置垂直翻转 | ✅ 是(1=启用,0=禁用) |
0 |
| 12 | Capture |
拍照并返回 Base64 编码图像 | ❌ 否 | - |
| 13 | Online |
被动返回,持续获取图像数据,帧数目前固定30帧 | ❌ 否 | - |
三、返回结果格式
无论成功或失败,均返回标准 ResponseDto 结构。
✅ 成功响应示例
{"Code": "015","Status": 1,"Data": {"OperaCode": 13,"Value": "data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUg..."}}
❌ 失败响应示例
{"Code": "015","Status": 0,"Data": null,"Message": "初始化失败"}
返回字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
Code |
string |
指令码,固定为 "015" |
Status |
int |
执行状态: • 1 = 成功• 0 = 失败 |
Data |
object |
成功时返回操作结果对象(见下表) |
Message |
string |
失败时的错误信息(如设备未初始化、找不到摄像头等) |
Data 对象结构(成功时)
| 字段 | 类型 | 说明 |
|---|---|---|
OperaCode |
int |
当前执行的操作码,用于前端区分回调类型 |
Value |
object |
实际返回数据,根据操作不同而变化: |
• CameraList → string[] 摄像头名称数组 |
||
• CameraResList → string[] 分辨率字符串数组(如 ["640x480", "1280x720"]) |
||
• Capture → string Base64 图像数据(格式:data:image/png;base64,...) |
||
• 其他无返回值操作 → null |
四、典型使用场景
场景 1:获取摄像头设备列表
请求
{"Code": "015","ParamStr": "{\"OperaCode\": 1, \"CameraIndex\": 0}"}
返回
{"Code": "015","Status": 1,"Data": {"OperaCode": 1,"Value": ["Integrated Camera", "USB Camera"]}}
场景 2:拍照并获取图像
请求
{"Code": "015","ParamStr": "{\"OperaCode\": 13, \"CameraIndex\": 0}"}
返回
{"Code": "015","Status": 1,"Data": {"OperaCode": 13,"Value": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."}}
场景 3:启用水平翻转(镜像)
请求
{"Code": "015","ParamStr": "{\"OperaCode\": 11, \"CameraIndex\": 0, \"CameraValue\": 1}"}
返回
{"Code": "015","Status": 1,"Data": {"OperaCode": 11,"Value": null}}
五、注意事项
- ⚠️ 所有操作必须在 UI 线程 中执行,因依赖主窗体
_from实例。 - 📷
Capture操作返回的 Base64 数据较大,建议前端及时处理或压缩。 - 🔌 使用前需调用
OpenCamera打开摄像头,使用后调用CloseCamera释放资源。 - 🔄 前端应根据
OperaCode判断回调类型,实现多操作统一处理逻辑。 - 🛑 若
_from.camera未初始化,将抛出异常:"初始化失败",需做好错误捕获。
六、扩展建议
| 需求 | 建议 |
|---|---|
| 支持视频录制 | 新增 StartRecord / StopRecord 操作码 |
| 自动对焦控制 | 增加 AutoFocus 操作码 |
| 参数校验 | 在入口增加 paramCamDto 非空与边界检查 |
| 异步支持 | 封装为异步方法,避免阻塞 UI |
文档版本:v1.0
维护团队:医疗设备集成组
适用平台:Windows + .NET Framework 4.5+✅ 提示:此文档可作为前端调用摄像头功能的唯一参考依据,建议配合
WebSocket消息中心统一管理。
文档更新时间: 2025-09-15 18:08