通过USB通信

时间:2012-10-26 16:13:16

标签: android usb

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

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

2 个答案:

答案 0 :(得分:0)

我知道ADB的一些程序

因此,根据您的意愿,这可能是您的选择。

点击此处:http://android-dls.com/wiki/index.php?title=ADB

答案 1 :(得分:0)

您需要支持API或SDK的USB数据传输电缆(也称为USB数据链接电缆),然后使用以下代码。通信速度比使用USB上的WinSock(TCP / IP)或USB上的串行端口快得多。 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