Programmation d'un câble de transfert USB / conversation avec un pilote de périphérique USB

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

  •  03-07-2019
  •  | 
  •  

Question

Comment accéder par programme à un câble de transfert USB (tel que le Câble de transfert facile de Belkin) à partir de Windows ?

Je connais libusb-win32 , mais d'après ce que je peux dire, l'utiliser avec les nouveaux appareils et avec Windows Vista semble incertain.

Je sais que Windows Easy Transfer peut faire ce. Comment puis-je écrire du code qui fait la même chose que Windows Easy Transfer?

S'il n'y a pas de documentation prédéfinie sur la façon de procéder, je suis disposé à faire des recherches, mais je ne sais pas par où commencer. Comment puis-je regarder ce que Windows Easy Transfer fait pour savoir comment il le fait? Je constate que Windows attribue même aux câbles de transfert leur propre catégorie dans le Gestionnaire de périphériques, " Transférer des périphériques de câble. & Quot; Comment puis-je communiquer à bas niveau avec l'un de ces pilotes?

Était-ce utile?

La solution

J'ai découvert que Microsoft propose désormais WinUSB pour les utilisateurs simples. mode de communication avec les périphériques USB. (Un pilote de périphérique WinUSB doit tout d'abord être installé pour le périphérique; cela ressemble un peu à un pilote de périphérique libusb-win32.) WinUSB fonctionne sous XP (SP2 et versions ultérieures) et Vista.

Le câble de transfert facile utilise WinUSB pour son pilote de périphérique. J'ai donc pu communiquer avec lui en suivant l'exemple de code fourni par Microsoft document WinUSB .

Autres conseils

Pour ce faire, vous devrez utiliser l'API win32 de bas niveau. Microsoft a quelques exemples intéressants sur l’accès à un périphérique à interface humaine. Le câble de transfert n'est pas explicitement un HID comme une souris ou un clavier, mais il est conforme à la spécification HID.

Par exemple, pour obtenir le nom du périphérique USB, vous appelez

.
HidD_GetProductString(...)

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

Il y en a beaucoup plus, vous devriez absolument jeter un coup d'œil à l'exemple d'application c qui fonctionne pour toutes les versions de Windows de 2000 à Vista.

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

Bonne chance!

Vous devez disposer d’un câble de transfert de données USB (également appelé câble de liaison de données USB) qui support API ou SDK, utilisez le code suivant:

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


}

Voir: Référence1 , Référence2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top