this问题的后续问题,我能够:
找到我正在使用的设备,断开它与内核的连接,并声明(单个)接口。 。 。就我所能得到的而言。
当我尝试写入设备(这是一个自定义无线收发器,而不是我自己的设计)时,我得到(当使用LibUsb.bulkTransfer与端点0x00时):
LibUsb.bulkTransfer(handle, (byte)0x00, bb, transfered, 5000);
输入/输出错误,以及(当使用端点为0x81的LibUsb.bulkTransfer时):
LibUsb.bulkTransfer(handle, (byte)0x81, bb, transfered, 5000);
TimeOut错误。
我很确定我完全不知道我在这里做了什么(这对我的职位没有帮助),这比我习惯于沟通更深入使用较低级别的设备(我所做的最多是与.Net互操作)。
我已经看过lsusb命令并执行了它并获得了很多东西,我可以识别其中的一些,但大部分都是我迷失了并且希望有人握着我的手,或者指着我... USB for Dummies指南,可以帮我弄清楚我需要做什么。
最终结果(理想情况下)将是一个Java包,它允许与设备进行跨平台通信而不代表最终用户进行任何修改(并且通过跨平台我的意思是,windows,linux和mac,这就是我使用java4usb java库的原因。
我现在的位置是,使用lsusb命令的输出,我希望能够将命令从收发器发送到与之通信的外部设备。 (基本上它将命令发送到连接到LED的设备,该设备可以打开和关闭LED,并使其闪烁,它也可以从该设备接收命令并相应地响应它们,但宝贝步骤)。
你可以找到here的lsusb输出(它非常详细,而且我并不想用超过必要的内容来解决问题)。任何帮助或指示都将受到极大的赞赏。
编辑:更多的研究表明(来自lsusb输出)0x81端点是一种中断类型。将2和2放在一起使我得出的结论是,我既不需要批量传输也不需要控制传输,而是中断传输:
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval
LibUsb.interruptTransfer(handle, (byte)0x81, bb, transfered, 1000);
不幸的是,我仍然收到超时错误。
编辑:需要更多信息:
有人建议我使用usb4java.LibUsb controlTransfer方法进行同步控制(对于我需要做的事情的一半),这很好但是有几个参数需要填充,而且我不知道它们需要填补它是什么:
public static int controlTransfer(DeviceHandle handle, //I know this.
byte bmRequestType, //<--- What goes here?
byte bRequest, //<--- What goes here?
short wValue, //<--- What goes here?
short wIndex, //<--- What goes here?
ByteBuffer data, //<--- What goes here?
long timeout) //<--- What goes here?
我需要填写这些字段的所有方向,这将是一个很大的帮助,非常感谢。