2012-02-16 28 views
5

Come posso comunicare tra due PC tramite USB? Voglio che un programma invii i numeri attraverso la porta USB a un altro PC su cui un altro programma mostrerebbe questi numeri. Ho la sensazione che questo sia impossibile perché i PC sono pensati per essere host e non dispositivi, ma USB è veramente limitato? In realtà odio che USB non è come una porta COM che ha solo un buffer di input e un buffer di output. Invia e ricevi con facilità. Ho guardato libusb e potrei usarlo, ma non riesco a trovare un modo per rendere un PC un dispositivo. Quindi è anche possibile?Comunicazione da PC a PC USB

+0

ci sono speciali cavi USB è possibile ottenere (cercare "cavo di trasferimento USB") che consentono la comunicazione da PC a PC. Non ho idea di come funzionano - presumibilmente hanno qualche dispositivo speciale tra le macchine che consente a ciascuno di apparire come un dispositivo, non un host. – Jason

+0

Si potrebbe odiare che USB non è come seriale, ma per il consumatore medio è una manna dal cielo perché USB consente al computer di rilevare automaticamente il tipo di dispositivo collegato e in molti casi installare automaticamente i driver. Non è più necessario inserire i numeri di porta COM nei programmi di utilità di configurazione. –

risposta

5

Non riesco a trovare un modo per rendere un PC un dispositivo. Quindi è anche possibile?

No, questo non è possibile su un PC. USB comunica sempre Host-> Dispositivo, e il PC è sempre Host. È possibile acquistare uno speciale cavo USB2USB, questo ha un chip nel mezzo che comunica come dispositivo su entrambe le estremità.

Ma vorrei solo usare un cavo LAN. Ogni PC che conosco arriva con Ethernet in questi giorni. TCP/IP non è troppo difficile da usare.

+0

+1 per LAN e TCP/IP. Dopo aver impostato una connessione TCP/IP, è molto simile alla porta seriale e solo un buffer di input e un buffer di output. –

+0

Beh, in tal caso dovrò cercare di usare Ethernet o quello speciale cavo USB. Grazie. – user1214513

+0

Che dire di [Abilitazione USB RNDIS] (https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)? Il supporto _RNDIS consente al PC di comunicare con un sistema embedded basato su Linux tramite USB rendendo il sistema incorporato simile a un adattatore Ethernet collegato USB. E possiamo accedere a RNDIS come server Web ssh o. Le mie domande se abbiamo bisogno di un cavo speciale o solo del normale? –

4

Se ti piacciono così tanto le porte seriali, dovresti semplicemente prendere uno USB-to-serial adapter per ogni computer e quindi collegarli insieme. Questi dispositivi creano una porta COM virtuale sul tuo computer e puoi usarla nello stesso modo in cui utilizzeresti una normale porta COM.

+0

+1 per essere uno dei modi più semplici e scodabili per farlo. – gbmhunter

3

È necessario disporre di un cavo di trasferimento dati USB (chiamato anche cavo di collegamento dati USB) che supporta API o SDK, quindi utilizzare il seguente codice. Velocità di comunicazione molto più veloce rispetto all'utilizzo di WinSock (TCP/IP) tramite USB o porta seriale via USB. La velocità di comunicazione USB 2.0 è di 480 Mbps, velocità di comunicazione dati effettiva superiore a 100 Mbps e può isolare virus e attacchi di rete.

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(); 


} 

See: Reference1, Reference2

Problemi correlati