摄像头控制接口文档(指令码:015)

功能描述:通过指令码 015 控制摄像头设备,支持获取设备列表、拍照、旋转、缩放、翻转等操作
通信方式:JSON 消息(如 WebSocket、IPC 消息通道)
最后更新:2025年9月15日
适用系统:体检终端设备控制系统(.NET 平台)


一、请求 JSON 格式

  1. {
  2. "Code": "015",
  3. "ParamStr": "{\"OperaCode\": 13, \"CameraIndex\": 0, \"CameraValue\": 1}"
  4. }

字段说明

字段 类型 必填 说明
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 结构。

✅ 成功响应示例

  1. {
  2. "Code": "015",
  3. "Status": 1,
  4. "Data": {
  5. "OperaCode": 13,
  6. "Value": "data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUg..."
  7. }
  8. }

❌ 失败响应示例

  1. {
  2. "Code": "015",
  3. "Status": 0,
  4. "Data": null,
  5. "Message": "初始化失败"
  6. }

返回字段说明

字段 类型 说明
Code string 指令码,固定为 "015"
Status int 执行状态:
1 = 成功
0 = 失败
Data object 成功时返回操作结果对象(见下表)
Message string 失败时的错误信息(如设备未初始化、找不到摄像头等)

Data 对象结构(成功时)

字段 类型 说明
OperaCode int 当前执行的操作码,用于前端区分回调类型
Value object 实际返回数据,根据操作不同而变化:
CameraListstring[] 摄像头名称数组
CameraResListstring[] 分辨率字符串数组(如 ["640x480", "1280x720"]
Capturestring Base64 图像数据(格式:data:image/png;base64,...
• 其他无返回值操作 → null

四、典型使用场景

场景 1:获取摄像头设备列表

  • 请求

    1. {
    2. "Code": "015",
    3. "ParamStr": "{\"OperaCode\": 1, \"CameraIndex\": 0}"
    4. }
  • 返回

    1. {
    2. "Code": "015",
    3. "Status": 1,
    4. "Data": {
    5. "OperaCode": 1,
    6. "Value": ["Integrated Camera", "USB Camera"]
    7. }
    8. }

场景 2:拍照并获取图像

  • 请求

    1. {
    2. "Code": "015",
    3. "ParamStr": "{\"OperaCode\": 13, \"CameraIndex\": 0}"
    4. }
  • 返回

    1. {
    2. "Code": "015",
    3. "Status": 1,
    4. "Data": {
    5. "OperaCode": 13,
    6. "Value": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD..."
    7. }
    8. }

场景 3:启用水平翻转(镜像)

  • 请求

    1. {
    2. "Code": "015",
    3. "ParamStr": "{\"OperaCode\": 11, \"CameraIndex\": 0, \"CameraValue\": 1}"
    4. }
  • 返回

    1. {
    2. "Code": "015",
    3. "Status": 1,
    4. "Data": {
    5. "OperaCode": 11,
    6. "Value": null
    7. }
    8. }

五、注意事项

  • ⚠️ 所有操作必须在 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