通过USB通信

问题描述:

在很多文章中,我已经看到,自Android 3.1以来,有可能将设备作为USB主机。虽然这很好,但它实际上并不是我需要的功能。我只需要通过设备的USB端口进行通信,这意味着发送和接收命令。谁在这种情况下担任主机对我来说并不重要,PC可以是主机,我的设备是客户端。有没有android的功能,允许我通过USB端口发送命令,并从另一端(当前情况下是我的电脑和一个在USB端口侦听设备的应用程序)接收答案。通过USB通信

我尝试过使用清单中的uses-feature函数作为主机(它是华硕Transformer Pad)的方法,但UsbManager.getDeviceList向我返回一个空设备,无论连接到设备是什么,PC,另一个Android设备)。

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

所以这可能是你这取决于你想要做什么的选项。

检查这里:http://android-dls.com/wiki/index.php?title=ADB

+0

感谢你的小费,我看了一眼在Android SDK中的样品,在那里,我有一个小问题,它具有以下行:对(UsbDevice设备:mManager.getDeviceList()。values())。现在的问题是,在我的应用程序mManager.getDeviceList()。size()== 0 – Muepe

你需要有一个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