我的主要目标是能够通过我计算机上的 USB 与 Hercules Dualpix Exchange 网络摄像头对话,以便更好地了解协议及其需求。我做了一些研究,发现这个特定的网络摄像头使用了 OV534 图像处理器,它有自己的 USB 协议。似乎 OV534 使用了 USB 视频类/USB 音频类,这让我觉得这将很容易接口。但实际上恰恰相反...
我已经能够通过 USB 连接到设备并传输一些数据(我可以请求配置),但几乎没有其他任何工作。我现在的目标是打开内部 LED,但即使这样也行不通。我一直在尝试模仿 OV534 模块在 UVC 中的工作方式,但是我的读/写都没有做任何事情(除了超时和没有足够的 bmAttributes)。
有人对我的问题有任何见解吗?我可能没有正确使用 PyUSB,但我一直在尝试以与在此代码中完全相同的方式设置寄存器。我的读/写功能是
def reg_read(dev, reg):
requestType=(0x01) | (usb.util.CTRL_IN) | (usb.util.CTRL_TYPE_STANDARD)#(0x80)|(0x02 << 5)|(0x01)
request=0x1
value=0x0
index=reg
byt=20
timeout=2000
#ret = dev.ctrl_transfer(requestType, request, value, index, byt, timeout)
ret = dev.ctrl_transfer(requestType, request, value, index, byt, timeout)
return ret
def reg_write(dev, reg, data):
requestType=(0x01) | (usb.util.CTRL_OUT) | (usb.util.CTRL_TYPE_STANDARD) #(0x80)|(0x02 << 5)|(0x01)
request=0x1
value=0x0
index=reg
dat=data
timeout=2000
#ret = dev.ctrl_transfer(requestType, request, value, index, dat, timeout)
ret = dev.ctrl_transfer(requestType, request, value, index, dat, timeout)
return ret
作为参考,这是 OV534.c 代码 (http://git.linuxtv.org/pinchartl/uvcvideo.git/blob/fbb4c6d20f29f2b10daad31cc6238d91f93d70d4:/drivers/media/video/gspca/ov534.c)