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

Qt Discussion :

QSettings liste des ports COM


Sujet :

Qt

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 423
    Points : 303
    Points
    303
    Par défaut QSettings liste des ports COM
    Bonjour,
    J'essaye de récupérer la liste des ports COM qui existent dans une machine avec cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    QString* getComPorts()
    {
    	QSettings settings("HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM",QSettings::NativeFormat);
    	QStringList listKey = settings.allKeys();
    	for (int i = 0; i < listKey.size(); ++i){
                    qDebug() <<listKey.at(i).toLocal8Bit().constData();
    		qDebug() << settings.value(listKey.at(i).toLocal8Bit().constData());
    	}
    }
    Le résultat affiché et le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    \device\serial0
    QVariant(,)
    \device\serial1
    QVariant(,)
    En fait j'ai pu récupérer les noms des clés mais pas des valeurs. Je pense que cela vient des noms utilisés pour les ports COM qui contiennent des "\" donc ils sont interprétés comme une arborescence par la variable settings. Comment je peut résoudre ce problème merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    423
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 423
    Points : 303
    Points
    303
    Par défaut
    Bon, j'ai trop cherché mais je n'ai pas trouvé une solution pour ce problème, donc j'ai utilisé les fonctions offerts par le système d'exploitation RegOpenKeyEx et RegEnumValue pour récupérer la liste des ports. Voici le code en cas de besoin :
    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
     
    HKEY key;
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,(LPCWSTR)L"HARDWARE\\DEVICEMAP\\SERIALCOMM",0,KEY_ALL_ACCESS,&key);
    unsigned long nNom=25,nVal=25;
    wchar_t valeur[25];
    wchar_t nomVal[25];
    int ret,i=0;
    do {
         nNom=25;
         nVal=25;
         ret=RegEnumValue(key,i,(LPWSTR)nomVal,&nNom,0,0,(unsigned char *)valeur,&nVal);
         if (ret != ERROR_NO_MORE_ITEMS) {
    	this->portComList<<QString::fromWCharArray(valeur);
    	i++;
         }
    } while (ret != ERROR_NO_MORE_ITEMS);
    RegCloseKey(key);

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

Discussions similaires

  1. Liste des Port COM
    Par Nico28 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/10/2007, 13h40
  2. Liste des port com
    Par tryonyco dans le forum C++Builder
    Réponses: 6
    Dernier message: 22/05/2007, 23h04
  3. [VC++]liste des ports COM "ouverts"
    Par _yeye_ dans le forum Visual C++
    Réponses: 3
    Dernier message: 29/09/2006, 15h47
  4. Mise à jour de la liste des ports COM détectées
    Par chourmo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 23/12/2005, 15h11

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