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 :

SerialPort - Tester la connexion


Sujet :

C#

  1. #1
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut SerialPort - Tester la connexion
    Bonjour,

    Est ce qu'il existe un moyen de tester la connexion série ?

    Par exemple envoyer une séquence de bits prédéfinit qui renverrait une réponse ou je ne sait pas trop quoi. Je n'ai pas la possibilité d'envoyer un message d'un coté à l'autre car il n'y a un ecran que dans un coté, donc pas moyen de savoir si le message a bien été recu.



    Yoshio

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Yoshio Voir le message
    Bonjour,

    Est ce qu'il existe un moyen de tester la connexion série ?

    Par exemple envoyer une séquence de bits prédéfinit qui renverrait une réponse ou je ne sait pas trop quoi. Je n'ai pas la possibilité d'envoyer un message d'un coté à l'autre car il n'y a un ecran que dans un coté, donc pas moyen de savoir si le message a bien été recu.



    Yoshio
    C'est très dépendant de ce qui est connecté à ton port série et de ce que tu appelles tester.
    Tu veux savoir si un appareil est connecté dessus ?
    Tu veux savoir si ce qui est conencté dessus est fonctionnel ?
    Tu veux récupérer l'état du matériel connecté ?
    Tu veux envoyer une séquence de bit pour que de l'électricité jaillisse du port série et ainsi faire fuir ton chat (ou chien, ou tout autre animal) qui se planque derrière ta tour malgrès tous les jurons que tu lui as continuellement lancé pour pas qu'il se mette à cette endroit ?

    C'est quoi le nom du personnage qui te sert d'avatar ?
    J'en suis tombé amoureux

  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Tu peux répondre à toutes tes questions

    Plus sérieusement, j'ai besoin de savoir si le cable est connecté aux appareils et si on peux échanger des données entres eux.

    Le perso c'est Lacus Clyne de Gundam Seed Destiny.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Yoshio Voir le message
    Tu peux répondre à toutes tes questions

    Plus sérieusement, j'ai besoin de savoir si le cable est connecté aux appareils et si on peux échanger des données entres eux.

    Le perso c'est Lacus Clyne de Gundam Seed Destiny.
    Maintenant que tu le dis je la reconnais (j'ai vu l'anime (et a moitié de la suite mais cela m'a saoulé après))

    En fait non
    Même pas à une seule.

    J'ai juste commencé à débrouissaller les choses pour les autres.

    Bon je ne connais pas encore le framework, donc je ne sais pas s'il y a les classes qu'il te faut, mais je ne pense pas que ce soit le cas.
    En effet les ports séries ne sont plus commercialisés depuis longtemps, et donc comme .net est une techno récente, je ne pense pas qu'avoir des classes qui gère les connexion au ports séries fuent considérés comme primordiale.

    Les objets WMI peuvent peut être le faire :
    http://msdn2.microsoft.com/en-us/lib...13(VS.85).aspx
    Les exemples sont en VBS donc il faut traduire en c#, ce n'est pas si compliqué que cela.
    Je sais qu'il y a des tuto pour l'utilisation de WMI en C#.

  5. #5
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Je viens de regarder du coté du System.Managment mais c'est pas la gloire. Je sais pas quoi utiliser ni comment.

    Quelqu'un aurait une piste ?

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Yoshio Voir le message
    Je viens de regarder du coté du System.Managment mais c'est pas la gloire. Je sais pas quoi utiliser ni comment.

    Quelqu'un aurait une piste ?
    Tu as essayé le WMI ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Salut !

    Il y a une classe du nom de SerialPort situé dans l'assemblie System.IO.Ports du framework 2.0.

  8. #8
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Citation Envoyé par ddaime Voir le message
    Salut !

    Il y a une classe du nom de SerialPort situé dans l'assemblie System.IO.Ports du framework 2.0.
    Si tu arrive a faire ce que je veux avec la classe SerialPort je t'invite à me dire comment.
    Tu as essayé le WMI ?
    J'essaye de comprendre comme ca marche la

  9. #9
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Je viens de trouver ce qu'il me fallait, je n'ai pas encore tester si ca marche mais c'est pas mal du tout comme programme en tout cas : un générateur de code WMI

    C'est par ici : http://www.microsoft.com/downloads/d...displaylang=en

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Perso, je ne suis pas sur que WMI t'aidera beaucoup, enfin dans sa simplicité.
    En ce qui concerne le port série, il n'y a aucun moyen de savoir si un cable est branché dessus. Pour faire des test de connexion, tu peux utiliser un aure PC, ou un vieux modem, relié avec un cable série standard. Tu peu aussi utilisé Terminal, fourni avec Windows. Mais pour ce qui est de la programmation du port série je te conseil d'utiliser le contrôle SerialPort fourni avec le framework 2.0.

  11. #11
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Citation Envoyé par ddaime Voir le message
    Perso, je ne suis pas sur que WMI t'aidera beaucoup, enfin dans sa simplicité.
    En ce qui concerne le port série, il n'y a aucun moyen de savoir si un cable est branché dessus. Pour faire des test de connexion, tu peux utiliser un aure PC, ou un vieux modem, relié avec un cable série standard. Tu peu aussi utilisé Terminal, fourni avec Windows. Mais pour ce qui est de la programmation du port série je te conseil d'utiliser le contrôle SerialPort fourni avec le framework 2.0.
    Je t'invite a relire 2-3 fois les 3 premier posts.

    Ca m'aide en rien de me dire que WMI n'est pas simple ou sait pas quoi ...

    J'ai tester WMI avec le System.Management et le Win32_SerialPort ne marche pas. Ou plutot j'arrive pas a le faire marcher. Il ne faut pas faire de query et j'arrive pas autrement.


    Est ce que quelqu'un a déja utilisé WMI ?

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ha mais combien de générateur de code ils ont fait sur MS.
    Je le prend celui là.


    Je ne fait qu'utiliser WMI, mais en vbs, pour cela que je ne t'ai pas donné le code en C#.

    Mais cela fonctionne de la même façon je n'avais juste pas la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ManagementObjectSearcher searcher = 
                        new ManagementObjectSearcher("root\\CIMV2", 
                        "SELECT * FROM Win32_SerialPort"); 
     
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Win32_SerialPort instance");
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("PowerManagementSupported: {0}", queryObj["PowerManagementSupported"]);
                    }
    En WMI tout fonctionne ainsi.
    Récupération de l'objet avec l'impersonnation et une requête sur la classe désiré pour avoir une liste d'objet concernant ce que l'on souhaite faire.
    Tu même rajouter des where name = 'toto' si l'objet à un attribut name (marche avec les autre attributs aussi)

    C# semble simplifié les choses en passant au constructeur de ton objet le string pour l'inpersonnation et la requête SQL.
    Après la méthode get ne fait que te retourner la liste résultat de ta requête.

    Bref un peu comme une base de données objets


    Bon utilise ton outil, et va sur le dernier onglet.

    Sélectionne :
    root\CIMV2

    puis :
    Win32_SerialPort

    Appuis sur le bouton pour lister toutes les propriétés et sélectionnes en une, tu as sa description en français

    Availability semble faire en partie ce que tu souhaites.

    Va sur code language, selectionne C#, et retourne sur le premier onglet.
    Selectionne :
    root\CIMV2
    Win32_SerialPort
    Availability

    Et tu obtiens ce code :
    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
    using System;
    using System.Management;
    using System.Windows.Forms;
     
    namespace WMISample
    {
        public class MyWMIQuery
        {
            public static void Main()
            {
                try
                {
                    ManagementObjectSearcher searcher = 
                        new ManagementObjectSearcher("root\\CIMV2", 
                        "SELECT * FROM Win32_SerialPort"); 
     
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Win32_SerialPort instance");
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Availability: {0}", queryObj["Availability"]);
                    }
                }
                catch (ManagementException e)
                {
                    MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
                }
            }
        }
    }
    Ca m'aide en rien de me dire que WMI n'est pas simple ou sait pas quoi ...
    Du calme il essaye juste de t'aider.
    Ayant été à sa place, je sais que ce n'est pas marrant à encaisser.

  13. #13
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    C'est exactement ce que j'ai fait avec l'outil (c'est tout simple avec d'ailleurs). Le problème est que avec l'outil ou moi même dans mon programme quand j'exécute le code, il ne se passe absolument rien. Ça me dit que le résultat de l'objet ne peut être afficher avec une query.
    Est ce que tu obtient la même chose en testant avec l'outil ?

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    non

    Il s'exécute bien à partir de l'outil.
    Tu testes à partir de l'outil ou dans ton prgramme ?

    Edit :
    Ce code marche :
    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
    using System;
    using System.Management;
    using System.Windows.Forms;
     
    namespace WMISample
    {
        public class MyWMIQuery
        {
            public static void Main()
            {
                try
                {
                    ManagementObjectSearcher searcher =
                        new ManagementObjectSearcher("root\\CIMV2",
                        "SELECT * FROM Win32_SerialPort");
     
                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Win32_SerialPort instance");
                        Console.WriteLine("-----------------------------------");
                        Console.WriteLine("Availability: {0}", queryObj["Availability"]);
                    }
                    Console.ReadKey();
                }
                catch (ManagementException e)
                {
                    MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
                }
            }
        }
    }
    AU passage il me renvois 2 alors que rien n'est connecté dessus.
    C'est peut être sa valeur en cas de non connection d'un appareil.

  15. #15
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Ah ouais, je viens de tester sous vista et ca marche.

    Quand je suis avec mon portable sous xp ca marche pas. Peut être parceque je passe par un convertisseur usb/serie vu que j'ai pas de port série sur mon portable.

  16. #16
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Yoshio Voir le message
    Ah ouais, je viens de tester sous vista et ca marche.

    Quand je suis avec mon portable sous xp ca marche pas. Peut être parceque je passe par un convertisseur usb/serie vu que j'ai pas de port série sur mon portable.
    Peut être, dans ce cas là fais un code pour la détection du port usb.
    Disponible en WMI, mais je crois aussi implémenté dans le framework .net

  17. #17
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Je suis déçu de ta réaction Yoshio, car mon intention était de pouvoir t'aider. Pour répondre à ton post, oui je viens
    de relire 2-3 fois les 3 premiers post et rien que ta première question n'est pas trés claire comme la dis ced600 dans le post
    2. Bonne galère !

Discussions similaires

  1. Tester la connexion d'un pc réseau local avec un ping
    Par Revan777 dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/10/2006, 11h40
  2. Tester la connexion
    Par wassim_kh dans le forum Réseau
    Réponses: 9
    Dernier message: 11/07/2006, 08h33
  3. Tester la connexion d'un PC
    Par iris44 dans le forum Windows
    Réponses: 15
    Dernier message: 03/02/2006, 20h09
  4. Tester la connexion à une base
    Par kaboume dans le forum ASP
    Réponses: 4
    Dernier message: 04/03/2005, 15h54
  5. comment tester la connexion depuis un fichier BATCH
    Par philippe_Aix dans le forum Oracle
    Réponses: 13
    Dernier message: 11/10/2004, 16h56

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