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}
相关推荐
YMWM_2 小时前
查看realsense相机序列号脚本
开发语言·python·数码相机
小马同学-5 小时前
OpenStack 镜像管理:Glance 镜像服务实验
运维·云计算·openstack
wuyk5556 小时前
从零吃透 MQTT 通信|第 10 章 阿里云 / 腾讯云 MQTT 设备完整对接实战,三元组、签名、设备上云调试
c语言·开发语言·stm32·学习·阿里云·云计算·腾讯云
secondyoung17 小时前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
聚搜云——JuSouClouD19 小时前
搭建外贸网站想选用阿里云,找代理商采购划算吗?
阿里云·云计算
Dawn-bit20 小时前
Linux 运维基础扩展:跳板机、堡垒机与物理服务器全流程
linux·运维·服务器·云计算·运维开发
六面体混凝土移动师1 天前
我把 Cloudflare 开源了
架构·云计算·agent
yunlaodacom1 天前
AWS亚马逊云服务代理商:EC2和S3为什么建议放在同一Region?跨Region流量费和网络成本怎么规划
网络·云计算·aws
视觉工程师07061 天前
工业相机选择CCD 还是 CMOS
数码相机·视觉检测
不怕犯错,就怕不做1 天前
RK linux在buildroot中如何添加linux命令
linux·驱动开发·嵌入式硬件