Программирование USB-кабеля для передачи данных / обращение к драйверу USB-устройства

StackOverflow https://stackoverflow.com/questions/608607

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

Для этого вам нужно будет использовать низкоуровневый win32 API.У Microsoft есть несколько приятных примеров доступа к устройству с человеческим интерфейсом.Кабель для передачи данных явно не является 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

Удачи вам!

У вас должен быть USB-кабель для передачи данных (также называемый USB data link cable), который поддерживает 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top