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# Discussion :

Accès port COM virtuel


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Dirigeant
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dirigeant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut Accès port COM virtuel
    Bonjour

    J'utilise des petits modules qui font la conversion port série -> USB pour dialoguer avec un petit micro. Je souhaite récupérer la liste des ports COM qui ont été affecté avec ce module série->USB, pour cela j'ai besoin de récupérer le numéro d'identification de l'instance donné par Windows, mais je ne sais pas comment faire pour le récupérer en C#.
    Quelqu'un peut il me guider pour accéder à ce paramètre car ensuite je veux lister dans un menu déroulant les différents modules accessisbles. J'ai essayé avec une classe USB trouvée ici mais le numéro du port COM n'apparaît pas.

    D'avance merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    La méthode SerialPort.GetPortNames te renverra la liste des ports COM. Par contre je ne pense pas que ça t'indique si un port est lié à ton adaptateur USB. Tu pourrais peut-être obtenir cette info via WMI, mais ça risque d'être assez coton...

  3. #3
    Membre averti
    Profil pro
    Dirigeant
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dirigeant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut
    Aujourd'hui j'utilise la méthode ci-dessous pour ouvrir le bon port COM car je connais l'identifiant de mon module : VID_0403+PID_6001+12345678A

    comport.PortName = Registry.LocalMachine.OpenSubKey("SYSTEM").OpenSubKey("CurrentControlSet").OpenSubKey("Enum").OpenSubKey("FTDIBUS").OpenSubKey("VID_0403+PID_6001+12345678A").OpenSubKey("0000").OpenSubKey("Device Parameters").GetValue("PortName").ToString();

    Mais maintenant je vais en avoir plusieurs modules, je souhaite donc les lister avec le Port COM associé.

    Qu'est ce que WMI?

    D'avance merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par arbtec Voir le message
    Qu'est ce que WMI?
    http://dotnet.developpez.com/articles/wmi1/

    Je ne connais pas très bien le sujet, mais a priori ça permet d'accéder à pas mal d'infos sur la conf logicielle et matérielle de la machine. Tu devrais pas avoir de mal à trouver plus d'infos sur le net

  5. #5
    Membre averti
    Profil pro
    Dirigeant
    Inscrit en
    Septembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Dirigeant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 16
    Par défaut
    Oulala merci pour l'info mais ça me parait bien compliqué tout ça.

    J'ai essayé de regarder pour ce qui m'intéresse mais je n'arrive pas à obtenir l'identifiant de chaque port COM avec cette méthode, donc si quelqu'un y est arrivé je suis preneur

    Merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    C'est pas si compliqué en fait...
    Dans l'explorateur de serveur de Visual Studio, tu peux parcourir les classes WMI pour localiser l'info qui t'intéresse. J'ai repéré les classes suivantes, que tu pourrais utiliser :
    - MSSerial_PortName ("Nom du port série")
    - Win32_SerialPort ("Ports série")

    Par défaut elles ne sont pas affichées. Pour les afficher :
    - Affiche l'explorateur de serveur
    - "déplie" les noeuds jusqu'à voir "Classes de gestion"
    - fait clic droit sur "Classes de gestion", "Ajouter des classes"
    - ajoute "root\WMI\Nom du port série" et "root\CIMV2\Ports série"
    Les noeuds pour ces classes sont maintenant affichés dans l'explorateur de serveur, tu peux les déplier et afficher les propriétés pour chaque port.

    Ensuite, une fois que tu as repéré les classes qui t'intéressent et leurs propriétés, tu peux récupérer les infos dans ton code par une "requête" WMI :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"\\.\root\WMI", "select * from MSSerial_PortName");
                foreach (ManagementObject obj in searcher.Get())
                {
                    Console.WriteLine("Instance name = {0}, Port name = {1}", obj["InstanceName"], obj["PortName"]);
                }
    La classe Win32_SerialPort donne des infos plus détaillées que MSSerial_PortName, à toi de voir de quoi tu as besoin...

Discussions similaires

  1. Émuler un port COM virtuel
    Par DaffyDuck dans le forum API, COM et SDKs
    Réponses: 18
    Dernier message: 08/11/2018, 18h21
  2. Réponses: 4
    Dernier message: 09/10/2011, 13h46
  3. [W98] changer le numero port COM virtuel d'un cable usb to RS232
    Par Arnard dans le forum Windows 2000/Me/98/95
    Réponses: 2
    Dernier message: 10/06/2008, 14h22
  4. creation d'une paire de port com virtuel
    Par KnightCoder dans le forum Windows
    Réponses: 1
    Dernier message: 17/09/2007, 12h00
  5. [WD11] Création Port COM Virtuel
    Par C-Faust dans le forum WinDev
    Réponses: 2
    Dernier message: 27/07/2007, 08h02

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