我正在尝试连接USB设备(由我自己构建)与我的开发板(ODROID-X)进行通信
不幸的是,就异步通信而言,这些例子很少.我有一些中断驱动数据交换的问题 – 如何使用异步中断模式构建连接?
在一个方向,传输是可能的…但在这两个方面都不行.有没有这样的例子:
不幸的是,就异步通信而言,这些例子很少.我有一些中断驱动数据交换的问题 – 如何使用异步中断模式构建连接?
在一个方向,传输是可能的…但在这两个方面都不行.有没有这样的例子:
>发送带有endpoint_OUT的ByteBuffer
>在endpoint_IN上收到devic的消息
均处于中断模式.
非常感谢您的支持.
哈迪
解决方法
也许我误解了这里的问题.
作为来自第12级的API包的一部分的示例导弹漫游器应用程序使用queue()和requestWait()方法来处理中断类型端点.
请求是In或Out,取决于EndPoint的方向.
作为来自第12级的API包的一部分的示例导弹漫游器应用程序使用queue()和requestWait()方法来处理中断类型端点.
请求是In或Out,取决于EndPoint的方向.
一个漂亮的noddy请求 – >回复的代码看起来像这样.你会想要构建不同的实际代码,但这给你需要发生什么的要点(我希望)
public void run() { int bufferMaxLength=mEndpointOut.getMaxPacketSize(); ByteBuffer buffer = ByteBuffer.allocate(bufferMaxLength); UsbRequest request = new UsbRequest(); // create an URB request.initialize(mConnection,mEndpointOut); buffer.put(/* your payload here */; // queue the outbound request boolean retval = request.queue(buffer,1); if (mConnection.requestWait() == request) { // wait for confirmation (request was sent) UsbRequest inRequest = new UsbRequest(); // URB for the incoming data inRequest.initialize(mConnection,mEndpointIn); // the direction is dictated by this initialisation to the incoming endpoint. if(inRequest.queue(buffer,bufferMaxLength) == true){ mConnection.requestWait(); // wait for this request to be completed // at this point buffer contains the data received } } }
如果您实际上正在寻找一种以异步方式运行此IO的方式,而不会将线程绑定到其上,那么我认为您需要考虑使用DeviceConnection.getFilehandle()方法来返回一个标准文件句柄,理论上可以这样处理使用它就像是任何其他文件类型的资源.不过我会注意到我没有尝试过.