Partage
  • Partager sur Facebook
  • Partager sur Twitter

Question d'un débutant

8 mars 2019 à 13:55:31

Bonjour, je veux récupérer des valeurs brut des 6 wagos connecté au réseau via le protocole TCP/IP

mon code marche très bien pour un seul wago qui a son ip sur la photo , je veux faire la mème chose pour les autres wago qui ont juste l'ip qui se diffère par rapport a celui qui est dans la photo , j'ai pas voulu dupliquer le code 6 fois , ça me parait un peu con, Du coup je veux savoir comment peux je le faire correctement , j'utilise les classes ou une boucle,quelqu'un peut me donner un coup de main

-
Edité par MagAka 8 mars 2019 à 13:56:11

  • Partager sur Facebook
  • Partager sur Twitter
8 mars 2019 à 14:20:06

Salut,

Utilise les balises de codes <> car la c'est vraiment pas pratique :p

Une solution possible est de mettre ton code qui affiche les valeurs qui t'intéressent dans une méthode, comme ca :

public void afficherValeursWago(ModbusClient mc)
    {
      mc.Connect();
      int[] readHoldingRegisters = mc.ReadHoldingRegisters(0, 8);
      int[] readInputRegisters = mc.ReadHoldingRegisters(0, 4);
      for (int i = 0; i < readInputRegisters.Length; i++)
      {
        Console.WriteLine("Value of inputregister" + (i+1) + " " + readInputRegisters[i].ToString());
      }
      for(int i= 0; i<readHoldingRegisters.Length;i++){
        Console.WriteLine("Value of HoldingRegistre" + (i+1) + " " + readHoldingRegisters[i].ToString());
      }
      mc.Disconnect();
    }

Ensuite dans ton main tu fais boucler ta méthode sur une liste des ModbusClient que tu souhaites utiliser

static void Main(string[] args)
    {
      List<ModbusClient> listeMc = new List<ModbusClient>();
      listeMc.Add(new ModbusClient("194.176.3.14", 502));
      listeMc.Add(new ModbusClient("194.176.3.15", 502));
      listeMc.Add(new ModbusClient("194.176.3.16", 502));
      listeMc.Add(new ModbusClient("194.176.3.17", 502));
      listeMc.Add(new ModbusClient("194.176.3.18", 502));
      listeMc.Add(new ModbusClient("194.176.3.19", 502));
      foreach (ModbusClient mc in listeMc)
      {
        afficherValeursWago(mc);
      }
    }


Tu peux aussi passer par une classe, il te suffira de mettre la méthode dedans au lieu d'être avec ton main

-
Edité par earp91 8 mars 2019 à 14:21:24

  • Partager sur Facebook
  • Partager sur Twitter