摄像头控制接口文档(指令码: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