微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 LibUsbDotNet 写入端点时出现 Win32ErrorWinUSB 上的 alt 接口错误?

如何解决使用 LibUsbDotNet 写入端点时出现 Win32ErrorWinUSB 上的 alt 接口错误?

我正在尝试将 C++ 库移植到 .NET,但我无法让它工作,我不明白出了什么问题。我看到的唯一大变化是,在带有 libusb 的 C++ 库中,我必须将 alt 接口设置设置为 1,但在 LibUsbDotNet 中,这在 Windows 上是不可能的,因为 WinUsbDevice 没有任何用于 alt 接口的设置器,只有一个 getter(报告它是 0,与 libusb 不同)。

这是一个最小的代码,它在interruptEndpointWriter.Write上失败,返回Win32Error:

from flask import Flask,request
import requests

app = Flask(__name__)


@app.route("/data",methods=['GET'])
def data():
    url = request.args.get("url")
    print(url)
    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML,like Gecko) Cafari/537.36'}
    r = requests.get(url,headers=headers)
    print(r.text)
    return {"ok": True}

if __name__ == "__main__":
    app.run()

这是原始的 C++ 代码。这工作正常。

      foreach (UsbRegistry usbRegistry in UsbDevice.AllDevices)
            {
                if (usbRegistry.Pid == HELIOS_PID && usbRegistry.Vid == HELIOS_VID)
                {
                    if (usbRegistry.Open(out UsbDevice dac))
                    {
                        IUsbDevice libUsbDevice = dac as IUsbDevice;
                        if (libUsbDevice != null)
                        {
                            // (This code doesn't run because WinUsb devices do not implement these this interface,even though it's possible with C++ libusb)
                            libUsbDevice.ClaimInterface(0);
                            libUsbDevice.SetAltInterface(1);
                        }

                        using (var interruptEndpointWriter = dac.OpenEndpointWriter(WriteEndpointID.Ep06,EndpointType.Interrupt))
                        {
                            var errorCode = interruptEndpointWriter.Write(new byte[] { 0x03,0 },16,out int writeTransferLength);
                            if (errorCode == ErrorCode.Ok && writeTransferLength == 2)
                            {
                                Console.WriteLine("OK");
                            }
                        }
                    }
                }
            }

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。