Code ModbusTCP

bas-gfixe - 15 août 2021 à 09:21
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 - 17 août 2021 à 22:06
Bonjour à tous,

J'ai un problèmes à résoudre sur un code qui permet de commander un automate en modbusTCP. Je suis novice dans ce domaine c'est donc pas facile à ce dépatouille seul.

Le code fonctionne sans le bouton, mais quand je rajoute le bouton cela ne fonctionne plus.

Merci par avance

Lien copie d'écrant :
https://www.zupimages.net/up/21/32/lm02.png

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using EasyModbus;

namespace WindowsFormsAppdim
{
    public partial class Form1 : Form
    {
        ModbusClient modbusClient;
            public Form1()
        {
            InitializeComponent();
            ModbusClient modbusClient = new ModbusClient("127.0.0.1", 502);
            modbusClient.Connect();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            modbusClient.WriteSingleCoil(1, true);
            System.Threading.Thread.Sleep(1000);
        }
    }
}

3 réponses

Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
15 août 2021 à 09:43
Bonjour

Je me permets de déplacer ta questions dans le forum C#, car c’est bien le langage de ton code.

Tu peux mettre tes captures d’écran directement dans le message, c’est bien plus pratique pour nous que d’aller voir une autre page.

Ton problème technique vient du fait que la variable modbusClient n’existe pas dans la méthode abonnée au click du bouton. Cela est dû au fait que tu l’as déclarée pour m’exister que dans le constructeur du formulaire. La portée de ta variable n’est pas bonne.

Et c’est là qu’on arrive à ton vrai problème, celui de 99% des autodidactes (moi aussi en mon temps) partir bille en tête dans son projet et advienne que pourra. Et bien ça ne marche pas. On tombe toujours sur un os (parfois simple et dès le début comme ici, parfois plus compliqué et qui remet en question des semaines ou des mois de travail….) le meilleur conseil que je puisse te donner c’est de mettre ton projet de côté quelques jours le temps de suivre un cours en ligne pour débutants. Ça ne fera pas de toi un codeur expert mais te donnera le socle nécessaire à ton autoformation.
Celui de Tahé est très bien https://codes-sources.commentcamarche.net/forum/affich-10106196-code-modbustcp

0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
15 août 2021 à 14:37
je me rends compte que j'ai fait une erreur en copiant le lien du cours de Tahé....
https://tahe.developpez.com/dotnet/csharp/
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
15 août 2021 à 17:26
Bonjour à vous deux

Pour bas-gfixe
On évite de donner à une variable un nom identique au type de cette même variable ( même si C# fait la différence entre les majuscules et les minuscules )
ModbusClient modbus; // modbus est le nom et ModbusClient est le type

est à préférer à
ModbusClient modbusClient; // là c'est moins évident !!!


Ce n'est que mon humble avis .
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
15 août 2021 à 18:50
Salut, pour le coup, Visual studio part défaut suggère souvent le nom identique au type....
0
Bonjour, merci pour vos messages,

je vais continuer de potasser les tutos sur le C ++.

Après je souhaite seulement faire quelques programmes ihm très simple, le but n'est pas être un expert mais d'avoir quelques compétences

A bientôt merci
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
Modifié le 17 août 2021 à 22:07
Tu peux potasser le C++ si tu veux, mais là ça ne va pas t'aider, c'est du C#....
Et ce sera bien plus facile de faire de IHM simples en C# qu'en C++

Et donc, le cours de Tahé donné plus haut sera ton meilleur allié à mon avis
0
Rejoignez-nous