2012-02-16 79 views
5

¿Cómo puedo comunicarme entre dos PC por USB? Quiero que un programa envíe números a través del puerto USB a otra PC en la que otro programa muestre estos números. Tengo la sensación de que esto es imposible porque las PC están destinadas a ser hosts y no dispositivos, pero ¿es realmente tan limitado el USB? De hecho, odio que el USB no sea como un puerto COM que solo tiene un búfer de entrada y un búfer de salida. Envía y recibe con facilidad. Miré a libusb y podría usarlo, pero no puedo encontrar la manera de hacer de una PC un dispositivo. Entonces, ¿es posible?PC a PC Comunicación USB

+0

hay cables USB especiales, usted puede obtener (búsqueda "cable de transferencia USB") que permiten la comunicación de PC a PC. No tengo idea de cómo funcionan, presumiblemente tienen algún dispositivo especial entre las máquinas que les permite a cada uno parecer ser un dispositivo, no un host. – Jason

+0

Puede que odies que el USB no sea como el serial, pero para el consumidor promedio es una bendición porque USB permite que la computadora detecte automáticamente qué tipo de dispositivo enchufaste y en muchos casos instala los controladores automáticamente. Ya no tendrá que ingresar los números de puerto COM en las utilidades de configuración. –

Respuesta

5

No puedo encontrar la manera de hacer de una PC un dispositivo. Entonces, ¿es posible?

No, esto no es posible en una PC. USB se comunica siempre con Host-> Dispositivo, y la PC siempre es Host. Puede comprar un cable especial USB2USB, este tiene un chip en el medio que se comunica como dispositivo en ambos extremos.

Pero yo solo usaría un cable de LAN. Cada PC que conozco viene con Ethernet en estos días. TCP/IP no es demasiado difícil de usar.

+0

+1 para LAN y TCP/IP. Después de configurar una conexión TCP/IP, es muy similar al puerto serie y que solo tiene un búfer de entrada y un búfer de salida. –

+0

Bueno, en ese caso tendré que considerar usar Ethernet o ese cable USB especial. Gracias. – user1214513

+0

¿Qué pasa con [Habilitar USB RNDIS] (https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)? _El soporte de RNDIS permite a una PC hablar con un sistema embebido basado en Linux a través de USB haciendo que el sistema embebido se vea como un adaptador Ethernet conectado al USB. Y podemos acceder al RNDIS como servidor web ssh o. ¿Mis preguntas si necesitamos un cable especial o solo el habitual? –

4

Si te gustan tanto los puertos serie, solo debes obtener USB-to-serial adapter para cada computadora y luego conectarlos entre sí. Estos dispositivos crean un puerto COM virtual en su computadora y puede usarlo de la misma manera que usaría un puerto COM normal.

+0

+1 por ser una de las formas más sencillas y fáciles de hacerlo. – gbmhunter

3

Necesita un cable de transferencia de datos USB (también llamado cable de enlace de datos USB) que admita API o SDK, luego use el siguiente código. Velocidad de comunicación mucho más rápida que con WinSock (TCP/IP) a través de USB o puerto serie a través de USB. La velocidad de comunicación USB2.0 es de 480Mbps, velocidades de comunicación de datos efectivas superiores a 100Mbps, y puede aislar virus y ataques de red.

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


} 

Ver: Reference1, Reference2

Cuestiones relacionadas