我想用usb数据线从我的电脑与我的android应用程序进行通信。我应该实施什么样的听众?Android中的USB数据线通信
我认为TCP连接将满足我的需求,但通过adb驱动程序连接它似乎很尴尬。
如何使用数据线从Windows到Android进行通信?
我想用usb数据线从我的电脑与我的android应用程序进行通信。我应该实施什么样的听众?Android中的USB数据线通信
我认为TCP连接将满足我的需求,但通过adb驱动程序连接它似乎很尴尬。
如何使用数据线从Windows到Android进行通信?
我发现了一个关于这个问题的好帖子here。您基本上需要adb才能在Android设备和PC之间进行端口转发。例如:
C:\android-sdk-windows\tools\adb.exe forward tcp:38300 tcp:38300
然后,您可以在Android设备和PC中使用标准套接字编程。
Android通过两种模式支持各种USB外围设备和Android USB附件(实现Android附件协议的硬件):USB附件和USB主机。在USB配件模式下,外部USB硬件充当USB主机。
更多信息,请参阅:USB Host and Accessory和示例click here
你需要有一个USB数据传输线(也称为USB数据连接线),这 支持API或SDK,然后使用下面的代码:
void usb2usbComm()
{
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();
}
参见: Reference1,Reference2
如果数据量是低你可能只是通过MTP复制文件来回 协议。在大多数设备上很容易获得,不需要启用USB调试或使用USB配件模式。
太好了!谢谢你的提示! – opc0de
我试过(我的ap使用端口21121),然后关闭平板电脑上的wifi并运行我的ap(应该一起说话的pc和android)。他们不会在我做Socket socket = new Socket(mServerIP,21121)的时候;套接字失败IOException – steveh
我认为这对我不起作用,因为我在PC上有PC上的服务器套接字(它接听和接受)和客户端套接字。我想我需要在android上做端口转发?我尝试了免费港口代运车,但没有工作。 – steveh