Code ModbusTCP

Signaler
-
Messages postés
16281
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2021
-
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

Messages postés
16281
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2021
562
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

Messages postés
16281
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2021
562
je me rends compte que j'ai fait une erreur en copiant le lien du cours de Tahé....
https://tahe.developpez.com/dotnet/csharp/
Messages postés
2468
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
15 septembre 2021
141
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 .
Messages postés
16281
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2021
562
Salut, pour le coup, Visual studio part défaut suggère souvent le nom identique au type....
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
Messages postés
16281
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2021
562
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