PC到PC USB通信

问题描述:

如何通过USB在两台PC之间进行通信?我想要一个程序通过USB端口将数字发送到其他程序将显示这些数字的另一台PC上。我觉得这是不可能的,因为PC的意图是作为主机而不是设备,但是USB真的是有限的吗?其实我讨厌USB不像一个只有输入缓冲器和输出缓冲器的COM端口。您轻松发送和接收。我查看了libusb,并且可以使用它,但是我找不到一种将一台PC作为设备的方法。这甚至有可能吗?PC到PC USB通信

+0

有特殊的USB连接线就可以得到(搜索 “USB传输电缆”),允许PC到PC的通信。不知道它们是如何工作的 - 大概他们在机器之间有一些特殊的装置,使每个装置看起来像一个装置,而不是主机。 – Jason 2012-02-16 19:43:15

+0

您可能讨厌USB不像串口,但对普通消费者来说,这是天赐之物,因为USB允许电脑自动检测您插入的设备类型,并在很多情况下自动安装驱动程序。不必再输入COM端口号到配置实用程序中。 – 2012-02-16 20:08:16

我找不到一种方法将一台PC作为设备。这甚至有可能吗?

不,这是不可能在PC上。 USB总是与主机 - >设备通信,并且PC始终是主机。 你可以买一个特殊的USB2USB电缆,它有一个在两端通讯的芯片。

但我只是使用LAN电缆。这些天来,我所知道的每台PC都配备了以太网。 TCP/IP不太难使用。

+0

用于LAN和TCP/IP的+1。建立TCP/IP连接后,它与串口非常相似,并且只有一个输入缓冲区和一个输出缓冲区。 – 2012-02-16 20:07:24

+0

那么,在这种情况下,我将不得不考虑使用以太网或特殊的USB电缆。谢谢。 – user1214513 2012-02-16 20:11:58

+0

[启用USB RNDIS](https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)如何? _RNDIS支持允许PC通过USB与基于Linux的嵌入式系统对话,方法是使嵌入式系统看起来像一个USB连接的以太网适配器。我们可以作为ssh o网络服务器访问RNDIS。我的问题是否需要特殊电缆以及常规? – 2014-02-12 19:36:14

如果您非常喜欢串口,那么您应该为每台计算机获取USB-to-serial adapter,然后将它们连接在一起。这些设备在您的计算机上创建虚拟COM端口,您可以像使用普通COM端口一样使用它。

+0

+1相比,LAN通常不是那么快,因为它是最简单,最棘手的方法之一。 – gbmhunter 2013-12-12 23:31:57

您需要有支持API或SDK的USB数据传输电缆(也称为USB数据链接电缆),然后使用以下代码。通信速度比通过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