UVC摄像头打开关闭数据分析
2020-10-20
2003
0
UVC相机在打开时,会使用SET_INTERFACE命令,在停止播放时,也会发送SET_INTERFACE命令。
打开时,数据抓包为:
CTL 01 0b 01 00 01 00 00 00 SET INTERFACE
停播放时,数据抓包为:
CTL 01 0b 00 00 01 00 00 00 SET INTERFACE
通过SET_INTERFACE数据命令分析,可知
- 01 :x01表示从主机到设备,请求标准命令,接收者为接口。
- 0b :表示设置接口
- 打开时,值为 01 00,即0x0001,表示接口,转换接口=1
- 打开时,值为 01 00,即0x0000,表示接口,转换接口=0
- 01 00 :表示接口为1.
- 00 00 :表示数据长度为0.
通过上面可以知道,打开或停止摄像头,是通过转换接口来实现的。
通过Windows下UVC摄像头数据分析一节可知,接口1的转换接口中含有一个地址为0x81的同步/等时传输端点,故读取数据时需要设置为此接口。
以上为有转换接口的情况,但也有一种没有就没有转换接口。
对于没有转换接口的摄像头,即只有一个工作接口,但通过抓包发现,也会进行SET_INTERFACE,且发送的数据也一样。
如:
CTL 01 0b 00 00 01 00 00 00 SET INTERFACE
那么是如何区分设备的打开关关闭的呢?
通过分析,发现每次进行SET_INTERFACE后,返回的端点句柄不同,这样当在接收数据时,再次SET_INTERFACE,导致IPR返回参数错误。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936