2013-10-28 21 views
0

我希望我的問題不會奇怪或類似的東西,但我開始了一個關於android終端(目前是三星Galaxy S2,但可能會改變)與嵌入式基於-Linux的卡(armadeus apf51-dev,但未來可能是樹莓派)。實際上,我在android終端上有一個應用程序,顯示通過無線連接發送的Linux嵌入式卡的速度。主要目標是通過USB連接改變這個wifi連接。我的首要問題是實現管道的android一側。我發現這個答案由FabianCook(Transferring data USB):宣佈android終端和嵌入式linux卡之間的USB接口

UsbDevice dev = sDevice; 
     if (dev == null) 
      return; 
     UsbManager usbm = (UsbManager) getSystemService(USB_SERVICE); 
     UsbDeviceConnection conn = usbm.openDevice(dev); 
     l("Interface Count: " + dev.getInterfaceCount()); 
     l("Using " 
       + String.format("%04X:%04X", sDevice.getVendorId(), 
         sDevice.getProductId())); 

     if (!conn.claimInterface(dev.getInterface(0), true)) 
      return; 

     conn.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset 
                 // mConnection.controlTransfer(0×40, 
                 // 0, 1, 0, null, 0, 
                 // 0);//clear Rx 
     conn.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx 
     conn.controlTransfer(0x40, 0x02, 0x0000, 0, null, 0, 0);// flow 
                   // control 
                   // none 
     conn.controlTransfer(0x40, 0x03, 0x0034, 0, null, 0, 0);// baudrate 
                   // 57600 
     conn.controlTransfer(0x40, 0x04, 0x0008, 0, null, 0, 0);// data bit 
                   // 8, parity 
                   // none, 
                   // stop bit 
                   // 1, tx off 

     UsbEndpoint epIN = null; 
     UsbEndpoint epOUT = null; 

     byte counter = 0; 

     UsbInterface usbIf = dev.getInterface(0); 
     for (int i = 0; i < usbIf.getEndpointCount(); i++) { 
      l("EP: " 
        + String.format("0x%02X", usbIf.getEndpoint(i) 
          .getAddress())); 
      if (usbIf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { 
       l("Bulk Endpoint"); 
       if (usbIf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN) 
        epIN = usbIf.getEndpoint(i); 
       else 
        epOUT = usbIf.getEndpoint(i); 
      } else { 
       l("Not Bulk"); 
      } 
     } 

,這是非常有用的,但我不明白什麼是「sDevice」變量(1號線)。我想這是一個UsbDevice類的實例,但我不知道這個變量是如何實例化的。也許有人可以指出我的好方法?

+0

這將是USB主機,外部板或Android手機? –

回答