WINUSB_ControlTransfer只能在设备上可用的两个接口中的一个上使用,而不能在另一个接口上使用
WINUSB_ControlTransfer can only be used on one of the two interfaces available on the device, but not the other
我正在使用该设备,它有两个接口。有关 USB 设备的 lsusb 信息可在下面的链接中找到。 https://github.com/zougloub/libseek
相机有两个接口,第一个是iAP接口,第二个是com.thermal.pit206接口。我基于 iAP 接口编写了我的应用程序,因为。我之所以使用iAP界面,是因为其他人都是在GitHub上这样做的,所以我只是效仿。
我能够在iAP界面上使用Winusb_ControlTrasnfer功能。我可以初始化 WinUSB 句柄并使用它来发送和获取命令以及读取管道。
但是,当我使用 com.thermal.pit206 接口时,我仍然可以初始化 WinUSB 句柄,但我无法发送或获取命令。
void CommandTransfer(WINUSB_INTERFACE_HANDLE winIHandle, UCHAR requestTypeI, UCHAR requestI, USHORT valueI, USHORT indexI, USHORT lengthI, PUCHAR dataIn)
{
WINUSB_SETUP_PACKET packet;
ZeroMemory(&packet, sizeof(WINUSB_SETUP_PACKET));
packet.RequestType = requestTypeI;
packet.Request = requestI;
packet.Value = valueI;
packet.Index = indexI;
packet.Length = lengthI;
ULONG dataLength = 0;
if (!WinUsb_ControlTransfer(winIHandle, packet, dataIn, lengthI, &dataLength, NULL))
{
printf("ERROR: WinUsb_ControlTransfer, Windows Error Code - %d n", GetLastError());
}
}
在上面,您可以看到我用于向设备发送命令的代码副本。
我很困惑为什么我可以在使用 iAP 接口时向设备发送命令,但是当我使用 com.thermal.pir206 接口时,我无法这样做。
谢谢!任何有用的链接/信息不胜感激。
WinUsb_ControlTransfer()
函数仅适用于默认端点零,该端点始终为control
类型。
上述lsusb
输出上所有其他接口中的终结点均为bulk
类型。这些将需要使用WinUsb_ReadPipe()
或WinUsb_WritePipe()
功能。
相关文章:
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?
- 一个C头文件可以被认为是一个接口吗
- WINUSB_ControlTransfer只能在设备上可用的两个接口中的一个上使用,而不能在另一个接口上使用
- 如何制作一个满足SWIG中接口的python类
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- BASIC_SOCKETD_ACCEPTOR接口在Boost 1.66中更改.这是一个错误
- 如何在接口类中创建一个超类对象
- 当传递对类的引用时,优于另一个函数,即实现接口
- 将下一个(),hasNext()迭代界面转换为begin(),end()接口
- 使用类模板参数推导来创建一个静态接口
- 继承了另一个接口的接口的实现
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 是否有一个更适合键值数据结构的QABSTRACTITEMMODEL类型类/接口
- C 模板成员函数作为另一个模板类的接口
- 我可以在C++中创建一个匿名的动态类(接口的实现)吗?
- 制作一个类以提供Lists接口
- 在c++中的另一个相同类型的接口中克隆一个接口