2012-10-26 219 views
2

在很多文章中,我已經看到,自Android 3.1以來,有可能將設備作爲USB主機。雖然這很好,但它實際上並不是我需要的功能。我只需要通過設備的USB端口進行通信,這意味着發送和接收命令。誰在這種情況下擔任主機對我來說並不重要,PC可以是主機,我的設備是客戶端。有沒有android的功能,允許我通過USB端口發送命令,並從另一端(當前情況下是我的電腦和一個在USB端口偵聽設備的應用程序)接收答案。通過USB通信

我嘗試過使用清單中的uses-feature函數作爲主機(它是華碩Transformer Pad)的方法,但UsbManager.getDeviceList向我返回一個空設備,無論連接到設備是什麼,PC,另一個Android設備)。

回答

0

我知道的一些程序,我們ADB

所以這可能是你這取決於你想要做什麼的選項。

檢查這裏:http://android-dls.com/wiki/index.php?title=ADB

+0

感謝你的小費,我看了一眼在Android SDK中的樣品,在那裏,我有一個小問題,它具有以下行:對(UsbDevice設備:mManager.getDeviceList()。values())。現在的問題是,在我的應用程序mManager.getDeviceList()。size()== 0 – Muepe

0

你需要有一個USB數據傳輸線(也稱爲USB數據鏈接電纜),支持API和SDK,然後使用下面的代碼。通信速度比通過USB或串口通過USB使用WinSock(TCP/IP)要快得多。 USB2.0通訊速率爲480Mbps,有效數據通訊速率大於100Mbps,可以隔離病毒和網絡攻擊。

void CU2uDlg::OnOK() 
{ 
BYTE  buf[65530]; 
LPU2URET pU2uRet; 
BOOL  bRet; 
int   ret; 
CString  msgstr; 

ret = u2u_open(); 
if (ret == -1){ 
    AfxMessageBox("Open U2U device Success."); 
}else{ 
    msgstr.Format("Open U2U device fail,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//send data 
bRet = u2u_SendData(buf, 65530, ret); 
if(!bRet) 
{ 
    msgstr.Format("Send data error,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//receive data 
while (1){ 
    bRet = u2u_RecvData(recvData, dataLen, ret); 
    if(!bRet) 
    { 
     msgstr.Format("Receive data error,return:%d", ret); 
     AfxMessageBox(msgstr); 
     u2u_close(); 
     return; 
    }else{ 
     break; 
    } 
} 
u2u_close(); 


} 

參見: Reference1Reference2