Связь ПК с ПК через USB - PullRequest
       29

Связь ПК с ПК через USB

6 голосов
/ 16 февраля 2012

Как я могу общаться между двумя ПК через USB?Я хочу, чтобы программа отправляла номера через порт USB на другой компьютер, на котором другая программа показала бы эти номера.У меня такое чувство, что это невозможно, потому что ПК должны быть хостами, а не устройствами, но действительно ли USB ограничен?Я на самом деле ненавижу, что USB не похож на COM-порт, который просто имеет входной буфер и выходной буфер.Вы отправляете и получаете с легкостью.Я посмотрел на libusb и смог его использовать, но не могу найти способ сделать один ПК устройством.Так возможно ли это?

Ответы [ 3 ]

5 голосов
/ 17 февраля 2012

Если вам очень нравятся последовательные порты, вы просто должны получить USB-последовательный адаптер для каждого компьютера, а затем соединить их вместе.Эти устройства создают виртуальный COM-порт на вашем компьютере, и вы можете использовать его так же, как и обычный COM-порт.

5 голосов
/ 17 февраля 2012

Я не могу найти способ сделать один компьютер устройством.Так возможно ли это?

Нет, это невозможно на ПК.USB всегда связывает Host-> Device, а ПК всегда Host.Вы можете купить специальный кабель USB2USB, в центре которого находится микросхема, которая соединяется как устройство на обоих концах.

Но я бы просто использовал кабель локальной сети.Каждый компьютер, который я знаю, поставляется с Ethernet в эти дни.TCP / IP не слишком сложен в использовании.

3 голосов
/ 11 ноября 2013

Вам необходим кабель передачи данных USB (также называемый кабелем передачи данных USB), который поддерживает API или SDK, а затем используйте следующий код. Скорость связи намного выше, чем при использовании WinSock (TCP / IP) через USB или через последовательный порт через USB. Скорость передачи данных через USB 2.0 составляет 480 Мбит / с, эффективная скорость передачи данных превышает 100 Мбит / с и позволяет изолировать вирусы и сетевые атаки.

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


}

См: Ссылка1 , Ссылка2

...