Programar um cabo de transferência USB / conversando com um driver de dispositivo USB

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Como faço para programaticamente acessar um cabo de transferência USB (como Cabo Easy Transfer da Belkin) a partir do Windows ?

Eu estou familiarizado com libusb-win32 , mas pelo que eu posso dizer, usando isso com dispositivos mais recentes e com o Windows Vista parece duvidoso.

Eu sei que Windows Easy Transfer pode fazer isto. Como faço para escrever código que faz a mesma coisa que o Windows Easy Transfer?

Se não houver nenhuma documentação enlatados sobre como fazer isso, eu estou disposto a fazer algumas escavações, mas eu não sei por onde começar. Como faço para ver o que o Windows Easy Transfer está fazendo para descobrir como ele faz isso? Eu vejo que o Windows ainda dá cabos de transferência de sua própria categoria no Gerenciador de Dispositivos, "Transferência Devices cabo." Como eu faço a comunicação de baixo nível com uma dessas esses drivers?

Foi útil?

Solução

Eu descobri que a Microsoft oferece agora WinUSB para simples pelo usuário comunicação de modo com dispositivos USB. (Driver de dispositivo Um WinUSB primeiro deve ser instalado para o dispositivo;. Isto é algo semelhante a um driver de dispositivo libusb-win32). WinUSB funciona no XP (SP2 ou superior) e Vista

O Cabo Easy Transfer usa WinUSB para seu driver de dispositivo, então eu era capaz de se comunicar com ele, seguindo o exemplo de código no Microsoft de WinUSB documento howto .

Outras dicas

Você vai precisar usar o baixo nível API win32 para fazer isso. Microsoft tem alguns exemplos agradáveis ??aqui sobre como acessar um dispositivo de interface humana. O cabo de transferência não é explicitamente um HID como um rato ou o teclado, mas está em conformidade com a especificação HID.

Por exemplo, para obter o nome do dispositivo USB que você chamaria

HidD_GetProductString(...)

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

Há muito mais lá, você deve definitivamente dar uma olhada no aplicativo c amostra que funciona para todas as versões do Windows a partir de 2000 a Vista.

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

Boa sorte!

Você precisa ter um cabo de transferência de dados USB (também chamado de cabo de ligação de dados USB) que suporte API ou SDK, em seguida, use o seguinte código:

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


}

Veja: Referência1 , Reference2

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top