IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Commander USB (IHM)


Sujet :

C++Builder

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut Commander USB (IHM)
    Bonjour,
    Je suis nouveaux et je voudrais savoir si quelqu'un peut m'aider sur le dévelloppement d'un code qui devrait communiquer avec l'usb avec c++Builder.
    Pour le début le programme devrait juste analyser la clé USB et l'afficher dans un mémo mais j'ai un message d'erreur "acces refusé".
    Voici mon programme en pièce jointe.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut thedebutant11
    J'ai vu ton post sur le Forum Window, regarde ce post sur ce meme Forum dont voici le lien
    Cela ma demande de tres tres longues recherches et tres peut de choses interressantes sur l'USB->parallele, si cela t'interresse (en etant patient car je n'ai pas beaucoup de temps libre en ce moment) je donnerais le pourquoi et la facon de calculer toutes les valeurs que l'on passe, a savoir que c'est la facon la plus lente d'envoyer les donnees que j'ai choisie

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut communiquer avec une Usb
    Salut!!
    Merci de ta réponse, elle était inespéré.
    J'ai commencé a lire ton lien sa a l'air d'être très intéréssant, je mis met tout de suite. J'en suis au début encore, j'ai pense avoir a peu près compris comment trouvé n'importe quel GUID, le create file et write file close handle.
    Mon problème, c'est que je reçoit tout le temps FFFFFFF à createFile donc je pense que je fais une erreur sur le GUID je procède comme sa:
    http://forums.futura-sciences.com/ma...0277-guid.html

    Mon GUID serait:
    \\?\USB#Vid_067b&Pid_2305#5&c4772aa&0&1#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}
    Je pense qu'il y a deux facon d'écrire le GUID la première comme la tienne et la seconde comme il est réalisé dans le second lien.

    Voici des infos qui pourrons te servir à toi aussi peu être (tu dois déja les avoirs)
    http://www.planete-sciences.org/espa...facil_2003.pdf
    http://www.developpez.net/forums/d45...ture-port-usb/


    Je te tien au jus, j'ai de quoi avancer je pense.

    Merci ++

  4. #4
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    Rebonjour,
    Je n'arrive toujours pas à communiquer, avec le CreateFile cela me créer un fichier dans windows je pense que c'est toujours mon problème de GUID,
    c'est désespérant.....

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Avant de chercher a recuperer par programme le GUID essai comme ceci
    Voici ce que les infos recuperees sur mon PC

    dans le gestionnaire de periferiques,->controleur de bus USB " Prise en charge d'impression USB ",->propriete,->details " USB\\Vid_067b&Pid_2305\5&36c701f9&0&10 "
    dans la base de registre HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB\Vid_067b&Pid_2305

    Vid_067b&Pid_2305
    (par default) REG_SZ (valeur non definie)

    5&36c701f9&0&10
    (par default) REG_SZ (valeur non definie)
    Capabilites REG_DWORD 0x00000084(132)
    Class REG_SZ USB
    ClassGUID REG_SZ {36FC9E60-C465-11CF-8056-444553540000}
    CompatibleIDs REG_MULTI_SZ USB\Class_07&SubClass_01&Prot_01 USB\Class_07&SubClass_01 USB\Class_07 USB\Class_07
    ConfigFlags REG_DWORD 0x00000000(0)
    DeviceDesc REG_SZ Prise en charge d'impression USB
    Driver REG_SZ {36FC9E60-C465-11CF-8056-444553540000}\0014
    HardwareID REG_Multi_SZ USB\Vid_067b&Pid_2305&Rev_0202 USB\Vid_067b&Pid_2305
    LocationInformation REG_SZ IEEE-1284 Controler
    Mfg REG_SZ Microsoft
    Service REG_SZ usbprint
    UINumber REG_DWORD 0x00000000(0)

    Control
    (par default) REG_SZ (valeur non definie)
    ActiveService REG_SZ usbprint

    DeviceParameters
    (par default) REG_SZ (valeur non definie)
    ExtPropDescSemaphore REG_DWORD 0x00000001(1)
    SymbolicName REG_SZ \??\USB#Vid_067b&Pid_2305#5&36c701f9&0&10#{a5dcbf10-6530-11d2-901f-00c04fb951ed}

    LogConf
    (par default) REG_SZ (valeur non definie)
    en procedant de cette facon tu va pouvoir recuperer ce qu'il te faut
    si CreateFile te renvoie FFFFFFFF c'est qu'il y a une erreur

  6. #6
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut

    Salut,
    En fait, hier en fin d'après-midi je pense avoir réussi à le refaire marcher. Pour le vérifier j'ai juste regardé la où il me créer le fichier(il n'y en a plus) et en débranchant en regardant le message d'erreur(ou FFFFFFFF).
    Maintenant, j'essaie d'écrire , avec USBprint je ne sais pas si c'est possible comme sa car pour l'instant j'ai des erreurs, sauf pour le LPT_STATUS mais bon il n'y a rien de branché donc bon....?
    IOCTL_USBPRINT_GET_LPT_STATUS
    IOCTL_USBPRINT_GET_1284_ID
    IOCTL_USBPRINT_VENDOR_SET_COMMAND
    IOCTL_USBPRINT_VENDOR_GET_COMMAND
    IOCTL_USBPRINT_SOFT_RESET


    Merci, je vous tiens au jus.

  7. #7
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    Re,
    Je pense avoir compris ce que tu désiré faire grâce à cette doc(http://www.abcelectronique.com/acquier/usb3_fr.htm) mais tous les points ne sont pas clair dans le datasheet du pl2305 pour utiliser leur registre.

    J'ai essayé de faire avec votre programme, la communication par paquet jetons à marché la première fois il ma mis opération avec succès à tous les WRITE, mais la deuxième fois que je l'ai exécuté il a planté l' IHM et sa fait sa maintenant à tous les coups.
    Pour que sa remarche une fois faut que je redémarre le port usb (débrancher, rebrancher).
    Je me demande si c'est pas un problème avec le CRC j'essaie de le calculer mais pour l'instant rien de concluant..
    Voici un lien qui calcule le CRC mais je ne vois pas quelles valeurs y rentrer. http://zorc.breitbandkatze.de/crc.html

    Mon convertisseur est branché sur un port USB2 et dans la config que vous lui envoyer (que j'ai copié) DATA0 qui est pour USB1.1 est-ce compatible? Je pense que oui mais essayer de faire communiquer un USB1.1 avec DATA.M ne serait certainement pas possible.

    Voila beaucoup de question
    Je vous tiens au courant si j'arrive à faire quelque chose.

  8. #8
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    Voici le programme (c'est le tiens) ce qui change c'est que j'ai un paramètre de moins dans le createfile, je ne peut pas en mettre plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    HDEVINFO devs;
    GUID intfce;
    HANDLE USBhandle;
    DWORD written = 0;
     
    // \\\\.\\USB#Vid_067b&Pid_2305#5&c4772aa&0&2#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}
    USBhandle = CreateFile  ("\\\\.\\USB#Vid_067b&Pid_2305#5&c4772aa&0&2#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}",
                            GENERIC_WRITE,
                            0,
                            NULL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_SYSTEM,
                            NULL
                            );  // Référence pour les opérations asynchrones.f you supply a handle under Windows 95, the call fails and GetLastError returns ERROR_NOT_SUPPORTED
     
    // message d'erreur
    // si Ok " Opération réussie "
    // si Erreur " Le fichier spécifié est introuvable "
    ShowMessage(SysErrorMessage(GetLastError()));
     
     
    // Paquet Jeton (TOKEN)
    char command1[6] = {0x01,   // SYNC
                        0x87,   // PID OUT 0001->1000  complement 1110->0111 envoye 10000111->0X87
                        0x80,   // ADDR 01->0x80
                        0x40,   // ENDP 02->40
                        0xB8,   // CRC5 1D->B8
                        0x01};  // EOF
     
    // Paquet Donnees (DATA)
    char command2[6] = {0x01,   // SYNC
                        0xC3,   // DATA0
                        0x01,   // donnees envoyees
                        0xE4,   // CRC16  02->40 FD->BF  - A727->E4E5
                        0xE5,
                        0x01};  // EOF
    // Paquet de control (HANDSHAKE)
    char command3[3] = {0x01,   // SYNC
                        0x4B,   // ACK
                        0x01};  // EOF
     
    // WriteFile &gOverlapped
    int a = WriteFile(USBhandle, command1, 6, &written, NULL);
    // message d'erreur
    //ShowMessage(SysErrorMessage(GetLastError()));
     
    a = WriteFile(USBhandle, command2, 6, &written, NULL);
    // message d'erreur
    ShowMessage(SysErrorMessage(GetLastError()));
     
    a = WriteFile(USBhandle, command3, 3, &written, NULL);
    // message d'erreur
    ShowMessage(SysErrorMessage(GetLastError()));
     
     
    CloseHandle( USBhandle );
     
     
    }

  9. #9
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    Salut,
    En fait pour que sa face le Write à tous les coups j'ai du rajouter cette ligne de code juste avant le CloseHandle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    bool IoctlReset = DeviceIoControl(  USBhandle,
                                    IOCTL_USBPRINT_SOFT_RESET, //Renvoie true si OK
                                    NULL,
                                    0,
                                    &temp,
                                    255,
                                    &written,
                                    NULL
                                  );
    ShowMessage(SysErrorMessage(GetLastError()));
    Par contre quand je vérifie à l'oscilloscope les niveaux en sortie elles ne changent pas, je pense qu'il faut que j'essaye avec les tableaux du datasheet.
    Je vous tiens au courant qi il y a quelque chose de nouveau.
    bon W-E.

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/07/2008, 20h49
  2. Commander et ou communiquer avec ethernet série ou usb
    Par thibaut40 dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 10/03/2008, 20h12
  3. Commande AT via port USB
    Par Kemanke dans le forum MFC
    Réponses: 3
    Dernier message: 24/05/2007, 08h59
  4. Commander plusieurs moteurs par un seul port USB
    Par wolfjeremy dans le forum Windows
    Réponses: 6
    Dernier message: 11/06/2006, 14h52
  5. demonter les périphérique USB par la ligne de commande.
    Par Essilife dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/01/2006, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo