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

API, COM et SDKs Delphi Discussion :

USB Probleme de communication, tout essayé


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut USB Probleme de communication, tout essayé
    Bonjour,

    Après un temps fou de recherches et essais je finis par poster.

    J'explique mon but et les soucis rencontrés. Alors mon but est de communiquer avec un périphérique stockage de masse afin de lui envoyer des commandes.
    Le but n'est pas de créer des fichiers, les récupérer... etc, mais plutôt communiquer directement avec le processeur.

    J'ai déjà jeter un oeil sur des sources mais c'était du HID, donc ça ne correspondait pas à mes besoins , je veux éviter tout ce qui drivers.

    voila en gros ce que je cherche à faire.

    Passons au soucis

    Pour trouver le bon périphérique j'ai cherché dans la base de registre dans :

    \SYSTEM\ControlSet001\Control\DeviceClasses\{a5dcbf10-6530-11d2-901f-00c04fb951ed}\
    le périphérique qui possède le bon VID PID, je récupère son 'SymbolicLink' et ensuite je me suis servi de Createfile pour tester le périphérique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DeviceHandle := CreateFile(PChar('monperiph'), GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
    Jusque-là tout va bien puisque selon brancher/débrancher ça trouve ou pas le périphérique (selon l'état de 'DeviceHandle').

    Le problème commence quand j'essaie WriteFile ou ReadFile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Req := writeFile(DeviceHandle,OutBuffer,sizeof(OutBuffer),SizeSentBytes,nil);
    Req est toujours à false

    j'ai testé ça sur un Port série pour vérifier le code et ça fonctionne, je ne comprends pas où est ce que ca ne va pas, pour la peine j'ai aussi tester ca sur un périphérique HID et résultat négatif :/

    Je me demande si la valeur de 'DeviceHandle' est bonne et correspond au périphérique USB,

    Je n'ai pas utilisé de 'SetupDiGetClassDevs', 'SetupDiEnumDeviceInterfaces' puisque j'en ai déduit qu'on les utilisent pour récupérer le Lien Symbolique.

    Que faire, la grande question, si quelqu'un a déjà fait quelques choses de relatif à ce que je voudrais faire je suis preneur

    Je vous remercie d'avance.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut
    Bonsoir,

    Je patauges toujours, j ai essayé du HID pour voir un peut plus ce que je peux en faire, mais encore un fois soucis...

    j ai eu quelques erreurs (GetLastError() genre 87, 1784 mais celle qui a un succès fou avec moi c est la 87.

    je vais mettre un bout de code, peut etre que ca sera utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SubKeyTest :='\\?\HID#Vid_03eb&Pid_6201#6&16bebf6f&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}';
    DeviceHandle := CreateFile(PChar(SubKeyTest),
                                  GENERIC_READ or GENERIC_WRITE,
                                  FILE_SHARE_READ or FILE_SHARE_WRITE,
                                  nil,
                                  OPEN_EXISTING,
                                  FILE_FLAG_OVERLAPPED,
                                  0);
    Ici je n'ai pas d'erreurs mais la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                  Overlapp.Offset := 0;
                  Overlapp.OffsetHigh:=0;
     
                  SizeSentBytes := 0;
    Req := WriteFile(DeviceHandle,OutBuffer,SizeToBeSent,SizeSentBytes,@Overlapp);
    Ici j ai erreur 87 ou 1784.

    ERROR_INVALID_PARAMETER, je veux bien mais quel parametre :s

    enfin, si vous avez des idées je les veux bien

    A bientot,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RunTime]Probleme de communication avec exec
    Par Zaitchev dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2006, 21h07
  2. [VB.NET][USB]Probleme de deviceiocontrol
    Par monyca dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/06/2006, 17h22
  3. Réponses: 8
    Dernier message: 15/05/2006, 15h54
  4. probleme de communication port série
    Par ben23 dans le forum MFC
    Réponses: 8
    Dernier message: 06/02/2004, 15h12
  5. [web] problème de communication
    Par Hermant dans le forum Web
    Réponses: 2
    Dernier message: 04/02/2003, 14h15

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