如何通过USB在两台PC之间进行通信?我想要一个程序通过USB端口将数字发送到另一台PC上,另一台计算机上的另一个程序将显示这些数字。我感觉这是不可能的,因为PC应该是主机而不是设备,但USB真的有这样的限制吗?实际上我讨厌USB不像一个只有一个输入缓冲区和一个输出缓冲区的COM端口。您可以轻松地发送和接收。我查看了libusb,我可以使用它,但我找不到一种方法来使一台PC成为一台设备。那么这是可能的吗?
发布于 2012-02-17 04:03:09
我找不到一种方法让一台电脑变成一台设备。那么这是可能的吗?
不,这在PC上是不可能的。USB始终与主机->设备通信,而PC始终是主机。你可以买一条特殊的USB2USB电缆,它的中间有一个芯片,两端作为设备进行通信。
但我只会用一根局域网电缆。现在我认识的每一台电脑都有以太网。TCP/IP并不是很难使用。
发布于 2012-02-17 04:05:01
如果你这么喜欢串行端口,你应该为每台计算机买一个USB-to-serial adapter,然后把它们连在一起。这些设备在您的计算机上创建一个虚拟COM端口,您可以像使用普通COM端口一样使用它。
发布于 2013-11-11 16:25:40
您需要具有支持API或SDK的USB数据传输电缆(也称为USB数据链路电缆),然后使用以下代码。通信速度比使用WinSock(TCP/IP) over USB或串口over USB快得多。USB2.0通信速率为480 data,有效数据通信速度大于100 data,可隔离病毒和网络攻击。
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();
}请参阅:Reference1,Reference2
https://stackoverflow.com/questions/9317823
复制相似问题