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

Windows Discussion :

problème CreateFile ()


Sujet :

Windows

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2004
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : juin 2004
    Messages : 428
    Points : 446
    Points
    446
    Par défaut problème CreateFile ()
    bonjour,

    je veux ouvrir un port série et CreateFile me pose des soucis. Voici le bout de code concerné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char buf[] = "COM1";
    // ...
        hcom=CreateFile((LPCTSTR)buf, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING , 0, 0);
        if (hcom==0 || hcom==INVALID_HANDLE_VALUE)
            return false;
    // ...
    Ce code fonctionne parfaitement sous C++builder, mais je veux utiliser maintenant Qt que j'ai intégré à Visual studio.
    Avec ce dernier CreateFile me renvoie -1.
    Ca ne passe pas non plus avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       hcom=CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING , 0, 0);
    En revanche ça passe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       hcom=CreateFile(L"COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING , 0, 0);
    Comment puis-je résoudre ce soucis de caractère avec ma variable buf?

    Merci

  2. #2
    Membre habitué
    Avatar de Nykoo
    Profil pro
    Inscrit en
    février 2007
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2007
    Messages : 234
    Points : 166
    Points
    166
    Par défaut
    CreateFile prend un LPCTSTR comme 1er argument. LPCTSTR est LPCWSTR si UNICODE est défini LPCSTR sinon. voir http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

    Qt définie la macro UNICODE donc LPCTSTR est LPCWSTR qui est un wchar_t* si je ne me trompe pas.

    Donc tu dois lui donner un wchar_t* Voir du coté de QString::toWCharArray() ou alors utiliser les wstring...

    Sinon tu peux utiliser CreateFileA qui prend des LPCSTR .

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2004
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : juin 2004
    Messages : 428
    Points : 446
    Points
    446
    Par défaut
    Sinon tu peux utiliser CreateFileA qui prend des LPCSTR .
    ca marche et je préfère cette solution aux QString car j'utilise une classe pour gérer le port série et je tenais à ce qu'elle reste le plus générique possible.

    Ca reste toujours compatible avec C++ builder.

    Merci beaucoup.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/02/2010, 21h52
  2. Probléme avec createfile et affichage d'erreur
    Par vtk37 dans le forum Débuter
    Réponses: 1
    Dernier message: 24/08/2009, 12h38
  3. Problème incroyable avec CREATEFILE
    Par Tractor dans le forum Windows
    Réponses: 3
    Dernier message: 23/04/2009, 09h32
  4. Problème Handle CreateFile();
    Par taquilla dans le forum Windows
    Réponses: 3
    Dernier message: 30/07/2007, 15h27
  5. Problème avec createFile()
    Par sanatou dans le forum Windows
    Réponses: 6
    Dernier message: 02/11/2006, 16h19

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