UVC 红外相机初始化流程 setup包解析

UVC 红外相机初始化流程

概述

本文档基于原始数据分析Windows Hello红外相机的UVC初始化流程。

原始数据

复制代码
intf: 0 unit: 8 cs: 9 req: "85" data: "0400"
intf: 0 unit: 8 cs: 9 req: "86" data: "03"
intf: 0 unit: 8 cs: 9 req: "82" data: "00000000"
intf: 0 unit: 8 cs: 9 req: "83" data: "01000000"
intf: 0 unit: 8 cs: 9 req: "87" data: "00000000"
intf: 0 unit: 8 cs: 9 req: "84" data: "01000000"
intf: 0 unit: 8 cs: 9 req: "1" data: "00000000"
intf: 2 unit: 14 cs: 6 req: "85" data: "0900"
intf: 2 unit: 14 cs: 6 req: "86" data: "03"
intf: 2 unit: 14 cs: 6 req: "82" data: "00"
intf: 2 unit: 14 cs: 6 req: "83" data: "010303000000000000"
intf: 2 unit: 14 cs: 6 req: "87" data: "010301000000000000"
intf: 2 unit: 14 cs: 6 req: "84" data: "00"
intf: 2 unit: 14 cs: 6 req: "1" data: "010301000000000000"
intf: 2 unit: 14 cs: 9 req: "85" data: "0400"
intf: 2 unit: 14 cs: 9 req: "86" data: "03"
intf: 2 unit: 14 cs: 9 req: "82" data: "00000000"
intf: 2 unit: 14 cs: 9 req: "83" data: "01000000"
intf: 2 unit: 14 cs: 9 req: "87" data: "00000000"
intf: 2 unit: 14 cs: 9 req: "84" data: "01000000"
intf: 2 unit: 14 cs: 9 req: "1" data: "00000000"
intf: 2 unit: 14 cs: 6 req: "81" data: "010301000000000000"

数据重新分析

正确的请求类型映射

  • req: "1" = SET_CUR (设置当前值)
  • req: "81" = GET_CUR (获取当前值)
  • req: "82" = GET_MIN (获取最小值)
  • req: "83" = GET_MAX (获取最大值)
  • req: "84" = GET_RES (获取分辨率)
  • req: "85" = GET_LEN (获取数据长度)
  • req: "86" = GET_INFO (获取控制信息)
  • req: "87" = GET_DEF (获取默认值)

初始化流程详细分析

阶段1: 颜色相机MSXU_CONTROL_METADATA初始化 (intf:0, unit:8, cs:9)

步骤 请求类型 数据 说明
1 GET_LEN (85) "0400" 获取数据长度(4字节)
2 GET_INFO (86) "03" 获取控制信息(可读写)
3 GET_MIN (82) "00000000" 获取最小值(0)
4 GET_MAX (83) "01000000" 获取最大值(1)
5 GET_DEF (87) "00000000" 获取默认值(0)
6 GET_RES (84) "01000000" 获取分辨率(1)
7 SET_CUR (1) "00000000" 设置当前值为0

阶段2: 红外相机MSXU_CONTROL_FACE_AUTHENTICATION初始化 (intf:2, unit:14, cs:6)

步骤 请求类型 数据 说明
8 GET_LEN (85) "0900" 获取数据长度(9字节)
9 GET_INFO (86) "03" 获取控制信息(可读写)
10 GET_MIN (82) "00" 获取最小值(0)
11 GET_MAX (83) "010303000000000000" 获取最大值{1,3,3}
12 GET_DEF (87) "010301000000000000" 获取默认值{1,3,1}
13 GET_RES (84) "00" 获取分辨率(0)
14 SET_CUR (1) "010301000000000000" 设置当前值为{1,3,1}

阶段3: 红外相机MSXU_CONTROL_METADATA初始化 (intf:2, unit:14, cs:9)

步骤 请求类型 数据 说明
15 GET_LEN (85) "0400" 获取数据长度(4字节)
16 GET_INFO (86) "03" 获取控制信息(可读写)
17 GET_MIN (82) "00000000" 获取最小值(0)
18 GET_MAX (83) "01000000" 获取最大值(1)
19 GET_DEF (87) "00000000" 获取默认值(0)
20 GET_RES (84) "01000000" 获取分辨率(1)
21 SET_CUR (1) "00000000" 设置当前值为0

阶段4: 获取人脸认证当前状态 (intf:2, unit:14, cs:6)

步骤 请求类型 数据 说明
22 GET_CUR (81) "010301000000000000" 获取当前值{1,3,1}
相关推荐
胖咕噜的稞达鸭6 天前
如何写好一个skill
人工智能·数码相机
Hello-FPGA6 天前
CameraLink相机模拟器 信号源加速激光雷达系统算法开发
数码相机
双翌视觉6 天前
机器视觉系统为何离不开光学滤光片?
人工智能·数码相机·视觉检测·制造
tiancaijiben6 天前
阿里云Kubernetes集群托管完全指南:从创建到生产级运维
云计算
世微 如初6 天前
AP5125大功率LED恒流驱动实战:地摊灯项目从原理图到调试笔记
驱动开发·芯片·led电源驱动·降压恒流ic
ScilogyHunter6 天前
Zephyr串口驱动开发及构建完全指南
驱动开发·uart·zephyr
_Emma_6 天前
【DRM&Graphic】Linux图形与显示框架
linux·驱动开发·图形渲染·显示器
董厂长6 天前
Loop Engineering:停止手动提示,开始设计自动提示的系统
大数据·人工智能·驱动开发·llm
互联网推荐官6 天前
上海软件定制开发公司推荐:从PaaS工程化路径看D-coding的技术取舍
云原生·云计算·paas·软件开发·开发经验·上海
sbjdhjd6 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins