Программирование USB-кабеля передачи / разговор с драйвером устройства USB - PullRequest
6 голосов
/ 04 марта 2009

Как получить программный доступ к USB-кабелю передачи (например, к кабелю Belkin Easy Transfer ) из Windows?

Я знаком с libusb-win32 , но, насколько я могу судить, использование этого с более новыми устройствами и с Windows Vista кажется сомнительным.

Я знаю, что Windows Easy Transfer может сделать это. Как мне написать код, который делает то же самое, что и Windows Easy Transfer?

Если нет готовой документации о том, как это сделать, я готов кое-что сделать, но не знаю, с чего начать. Как посмотреть, что делает Windows Easy Transfer, чтобы узнать, как она это делает? Я вижу, что Windows даже предоставляет кабели передачи своей собственной категории в диспетчере устройств «Устройства передачи кабеля». Как выполнить низкоуровневую связь с одним из этих драйверов?

Ответы [ 3 ]

5 голосов
/ 10 марта 2009

Я обнаружил, что Microsoft теперь предлагает WinUSB для простой пользовательской связи с USB-устройствами. (Драйвер устройства WinUSB должен быть сначала установлен для устройства; это несколько похоже на драйвер устройства libusb-win32.) WinUSB работает на XP (SP2 и выше) и Vista.

Easy Transfer Cable использует WinUSB для своего драйвера устройства, поэтому я смог связаться с ним, следуя примеру кода в документе WinUSB Microsoft .

2 голосов
/ 04 марта 2009

Для этого вам нужно будет использовать низкоуровневый win32 API. У Microsoft есть несколько хороших примеров доступа к устройству Human Interface Device. Кабель передачи явно не HID, как мышь или клавиатура, но он соответствует спецификации HID.

Например, чтобы получить имя USB-устройства, вы бы назвали

HidD_GetProductString(...)

http://msdn.microsoft.com/en-us/library/ms790920.aspx

Там есть еще много чего, вы обязательно должны взглянуть на пример приложения c, который работает для всех версий Windows от 2000 до Vista.

http://msdn.microsoft.com/en-us/library/dd163258.aspx

Удачи!

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

Вам необходим кабель передачи данных USB (также называемый кабелем передачи данных USB), который поддержите API или SDK, затем используйте следующий код:

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

...