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 :

Affichage List C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Affichage List C#
    Bonjour , svp j'ai mon code qui doit m'afficher des registres modbus pour 6 ip

    Voila mon 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using EasyModbus;
     
    namespace ConsoleApp7
    {
        class Program
        {
            static void Main(string[] args)
            {
                var ipadresses = new List<string>();
                int i = 1;
                ipadresses.Add("194.176.3.14");
                ipadresses.Add("194.176.3.10");
                ipadresses.Add("194.176.3.15");
                ipadresses.Add("194.176.3.19");
                ipadresses.Add("194.176.3.20");
                ipadresses.Add("194.176.3.24");
     
                List<List<int>> valeurs = new List<List<int>>();
                List<int> registrevaleurs = new List<int>();
                List<int> registrevaleurs1 = new List<int>();
                List<int> registrevaleurs2 = new List<int>();
     
                foreach (string ip in ipadresses)
                {
                    {
     
                        ModbusClient modbusClient = new ModbusClient(ip, 502);
                        modbusClient.Connect();
                        int[] readimputregistre = modbusClient.ReadInputRegisters(1, 10);
                        bool[] readCoils = modbusClient.ReadCoils(1, 5);
                        bool[] readDiscreteInputs = modbusClient.ReadDiscreteInputs(1, 9);
     
                        foreach (int y in readimputregistre)
                        {
                            registrevaleurs.Add(y);
                        }
     
                        valeurs.Add(registrevaleurs);
     
                        foreach (bool x in readCoils)
                        {
                            registrevaleurs1.Add(Convert.ToInt32(x));
                        }
                        valeurs.Add(registrevaleurs1);
     
                        foreach (bool z in readDiscreteInputs)
                        {
                            registrevaleurs2.Add(Convert.ToInt32(z));
                        }
                        valeurs.Add(registrevaleurs2);
                        modbusClient.Disconnect();
                    }
                    foreach (int x in registrevaleurs)
                    {
                        Console.WriteLine("ReadInputRegisters = "+ x);
                    }
                    i++;
     
                    foreach (int y in registrevaleurs1)
                    {
                        Console.WriteLine("ReadCoils = " + y);
                    }
                    foreach (int z in registrevaleurs2)
                    {
                        Console.WriteLine("ReadDiscreteInputs = " + z);
                    }
                }
     
     
                /* for (i = 1; i < registrevaleurs2.Count; i++)
                 {
                     Console.WriteLine("Value of imputregistre " + i + " est " + registrevaleurs2[i].ToString());
                     // Console.WriteLine("Value of HoldingRegisters" + j + " est " + readHoldingRegisters[j].ToString());
                 }*/
                /*  for (i = 1; i < registrevaleurs1.Count; i++)
                  {
                     // Console.WriteLine("ReadDiscreteInputs " + i + " est " + registrevaleurs[i].ToString());
                  }
     
                  for (i = 0; i < registrevaleurs1.Count; i++)
                  {
                      Console.WriteLine("imputregistre_wago " + i + " est " + registrevaleurs1[i].ToString());
                  }*/
                //int valeur = valeurs[5][1];
                //   Console.WriteLine("test "+ valeur);
     
                Console.Write("Press any key to continue . . . ");
                Console.ReadKey(true);
     
            }
        }
    }

    et ce qui m'affiche en haut de consule qui est bon et qui correspondant à ce que je veux

    Nom : Capture.JPG
Affichages : 524
Taille : 64,7 Ko

    mais juste en dessus il m'affiches d'autres registres que je sais pas d'ou il les a pris

    Nom : Capture2.JPG
Affichages : 494
Taille : 91,2 Ko


    Je sais que c'est un probléme d’accolades quelque part , y a quelqu'un qui peut m'aider à bien afficher mes registres pour chaque ip de la liste des ip

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Bonjour,

    En regardant ton code, j'ai remarqué plusieurs choses, mais tout d'abord, je crois qu'il faudrait que tu renommes certaines variables pour y voir plus clair :

    Si tu renommes :
    • registrevaleurs en registreInputValeurs
    • registrevaleurs1 en registreCoilValeurs
    • registrevaleurs2 en registreDiscreteValeurs


    Et :

    • x en myInputValue
    • y en myCoilValue
    • z en myDiscriteValue


    Tu devrais y voir beaucoup plus clair et repérer les endroits où potentiellement, selon ce que j'ai observé, tu as mélangés les variables ;-)

    A+ :-)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour votre réponse , le voila mon code aprés modification , j'ai pu avoir les registres que je veux pour chaque ip

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using EasyModbus;
     
    namespace ConsoleApp7
    {
        class Program
        {
            static void Main(string[] args)
            {
                var ipadresses = new List<string>();
     
                ipadresses.Add("194.176.3.14");
                ipadresses.Add("194.176.3.10");
                ipadresses.Add("194.176.3.15");
                ipadresses.Add("194.176.3.19");
                ipadresses.Add("194.176.3.20");
                ipadresses.Add("194.176.3.24");
     
                List<List<int>> valeursregistres = new List<List<int>>();
                List<int> read_imputregistre = new List<int>();
                List<int> read_Coils = new List<int>();
     
     
                foreach (string ip in ipadresses)
                {
                        ModbusClient modbusClient = new ModbusClient(ip, 502);
                        modbusClient.Connect();
                        int[] readimputregistre = modbusClient.ReadInputRegisters(1, 10);
                        bool[] readCoils = modbusClient.ReadCoils(1, 5);
     
                        foreach (int y in readimputregistre)
                        {
                        read_imputregistre.Add(y);
                        Console.WriteLine("readimputregistre = " + y);
                        }
     
                    valeursregistres.Add(read_imputregistre);
     
                        foreach (bool x in readCoils)
                        {
                        read_Coils.Add(Convert.ToInt32(x));
                        Console.WriteLine("readCoils = " + x);
                        }
                    valeursregistres.Add(read_Coils);
                     modbusClient.Disconnect();
                }
     
                int valeur = valeursregistres[5][13];
              Console.WriteLine("test "+ valeur);
     
                Console.Write("Press any key to continue . . . ");
                Console.ReadKey(true);
     
            }
        }
    }
    une capture de ce que j'ai pu avoir pour l'affichage de l'ip 5 et 6 par exemple ,
    Nom : Capture.JPG
Affichages : 450
Taille : 84,4 Ko

    mon probléme c'est pour parcourir mes listes , quand je mets par exemple la 3 valeur de l'ip 6 je peux avoir ce que je veux


    Nom : Capture2.JPG
Affichages : 499
Taille : 85,9 KoNom : Capture3.JPG
Affichages : 493
Taille : 107,5 Ko


    mais que j'essaie la meme chose avec l'ip 5 par exemple il me donne n'importe quoi


    Nom : Capture4.JPG
Affichages : 464
Taille : 123,9 Ko

    vous avez des explications svp
    Dernière modification par rv26t ; 05/04/2019 à 20h50. Motif: Inutile de citer le message précédant, cela alourdit la lecture.

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Peut-être que l'erreur vient de l'index des tableaux : il commence à 0. Accéder à la valeur par [4][3] devrait permettre d'obtenir la bonne valeur, non ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    j'ai essayé mais me donne toujours la mème chose :/
    Nom : Capture.JPG
Affichages : 468
Taille : 132,6 Ko

    Citation Envoyé par KiLVaiDeN Voir le message
    Peut-être que l'erreur vient de l'index des tableaux : il commence à 0. Accéder à la valeur par [4][3] devrait permettre d'obtenir la bonne valeur, non ?
    le probléme se pose uniquement pour la liste des readimputregistre pour la liste des readcoils il marche parfaitement et me donne exactement la valeur demandé
    Dernière modification par rv26t ; 05/04/2019 à 20h52. Motif: Inutile de citer le message précédant, cela alourdit la lecture.+ fusion de messages consécutifs

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Ok il semble que le problème vienne de la logique, potentiellement aussi de la récupération des données ne utilisant la syntaxe des tableaux.

    Essayez d'utiliser la fonction "debug" de votre IDE, afin de voir ce qui est crée, et de comprendre pourquoi vous obtenez cette valeur. En tout cas, je peux être quasiment catégorique en affirmant qu'il s'agit d'une de ces deux choses : mauvaise méthode de récupération des données, peut-être s'intéresser aux méthodes spécifiques pour récupérer les éléments d'une List, ou problème de logique, les données ne sont pas insérées comme il faut et comme vous vous y attendez : quoiqu'il en soit, le mode debug devrait apporter des réponses :-)

Discussions similaires

  1. Affichage liste d'image
    Par J0r_x dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2007, 14h30
  2. affichage listes différents entre IE et FF aka THE Problem
    Par trotters213 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 31
    Dernier message: 25/09/2006, 11h21
  3. Problème fonction affichage listes déroulantes
    Par JLDR69 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/09/2006, 19h06
  4. [VB6] Bug d'affichage liste déroulante
    Par yttrium dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 30/05/2006, 08h45
  5. [xsl]affichage liste de 2 couleurs
    Par megane dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 28/06/2004, 09h30

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