2012-02-16 3 views
5

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

+0

есть специальные USB кабелей вы можете получить (поиск "передача USB кабеля"), которые позволяют PC-к-PC связи. Не знаю, как они работают - по-видимому, у них есть специальное устройство между машинами, которое позволяет каждому из них быть устройством, а не хостом. – Jason

+0

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

ответ

5

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

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

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

+0

+1 для локальной сети и TCP/IP. После настройки TCP/IP-соединения он очень похож на последовательный порт и что у вас есть только входной буфер и выходной буфер. –

+0

Ну, в этом случае мне придется изучить, используя либо Ethernet, либо специальный USB-кабель. Спасибо. – user1214513

+0

Как насчет [Включение USB RNDIS] (https://support.criticallink.com/redmine/projects/arm9-platforms/wiki/Enabling_USB_RNDIS_Support)? Поддержка _RNDIS позволяет ПК разговаривать с встроенной системой на базе Linux через USB, делая встроенную систему похожим на USB-адаптер Ethernet. И мы можем получить доступ к RNDIS как веб-серверу ssh o. Мои вопросы, если нам нужны специальные кабели, а также обычные? –

4

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

+0

+1 для того, чтобы быть одним из простейших, взломанных способов сделать это. – gbmhunter

3

Вам необходимо иметь кабель передачи данных USB (также называемый кабелем передачи данных USB), который поддерживает API или SDK, а затем использовать следующий код. Скорость обмена данными намного быстрее, чем использование WinSock (TCP/IP) через USB или последовательный порт через USB. Скорость передачи данных USB2.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(); 


} 

См: Reference1, Reference2

Смежные вопросы