android usb host 讀寫USB裝置

來源:互聯網
上載者:User

關於如何監聽裝置插拔以及擷取裝置許可權我就不說了,大家可以在網上搜一下有很多這方面的文章,我這裡就說一下如何讀寫資料。


 

          UsbInterface usbInterface = usbDevice.getInterface(0); //USBEndpoint為讀寫資料所需的節點  UsbEndpoint inEndpoint = usbInterface.getEndpoint(0);  //讀資料節點  UsbEndpoint outEndpoint = usbInterface.getEndpoint(1); //寫資料節點  UsbDeviceConnection connection = usbManager.openDevice(usbDevice); connection.claimInterface(usbInterface, true);  //發送資料  byte[] byte2 = new byte[64]; int out = connection.bulkTransfer(outEndpoint, cmd, cmd.length, 3000);  //讀取資料1   兩種方法讀取資料  int ret = connection.bulkTransfer(inEndpoint, byte2, byte2.length, 3000); Log.e("ret", "ret:"+ret); for(Byte byte1 : byte2){     System.err.println(byte1); }  //讀取資料2  /*int outMax = outEndpoint.getMaxPacketSize();int inMax = inEndpoint.getMaxPacketSize();ByteBuffer byteBuffer = ByteBuffer.allocate(inMax);UsbRequest usbRequest = new UsbRequest();usbRequest.initialize(connection, inEndpoint);usbRequest.queue(byteBuffer, inMax);if(connection.requestWait() == usbRequest){    byte[] retData = byteBuffer.array();    for(Byte byte1 : retData){        System.err.println(byte1);    }}*/                         UsbInterface usbInterface = usbDevice.getInterface(0);   //USBEndpoint為讀寫資料所需的節點   UsbEndpoint inEndpoint = usbInterface.getEndpoint(0);  //讀資料節點   UsbEndpoint outEndpoint = usbInterface.getEndpoint(1); //寫資料節點   UsbDeviceConnection connection = usbManager.openDevice(usbDevice);   connection.claimInterface(usbInterface, true);      //發送資料   byte[] byte2 = new byte[64];   int out = connection.bulkTransfer(outEndpoint, cmd, cmd.length, 3000);      //讀取資料1   兩種方法讀取資料   int ret = connection.bulkTransfer(inEndpoint, byte2, byte2.length, 3000);   Log.e("ret", "ret:"+ret);   for(Byte byte1 : byte2){    System.err.println(byte1);   }      //讀取資料2   /*int outMax = outEndpoint.getMaxPacketSize();   int inMax = inEndpoint.getMaxPacketSize();   ByteBuffer byteBuffer = ByteBuffer.allocate(inMax);   UsbRequest usbRequest = new UsbRequest();   usbRequest.initialize(connection, inEndpoint);   usbRequest.queue(byteBuffer, inMax);   if(connection.requestWait() == usbRequest){    byte[] retData = byteBuffer.array();    for(Byte byte1 : retData){     System.err.println(byte1);    }   }*/

首先得到可以操作USB裝置的節點Endpoint,0為讀資料節點,1未寫資料節點。
然後使用connection.bulkTransfer(endpoint, buffer, length, timeout) 發送資料。

我這裡讀資料的時候有兩種方法,讀資料1和讀資料2

注意:寫資料時傳入的是寫資料節點OutEndpoint,讀資料時傳入的是讀資料節點InEndpoint。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.