Bonjour , je viens de débuter sous C# j'aimerai réaliser une interface pour envoyé et recevoir des données. mais je rencontre un problème. si je mets en place le programme pour envoyé les données en 1er si lui qui marche après et si je mets le programme pour recevoir en premier si lui qui marche.


Mon objectif : j'aimerais en même temps que je reçois mes données je pourrais commander autre choses comme une led par exemple ou envoyé un text sur l'afficheur de mon LCD.

Voila le programme que j'ai réalisé merci d'avance pour votre aide. je suis ouvert a toute suggestion pour l'amélioration de mon interface.

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
 
namespace Ibrahim23
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
//// chercher les ports ouvert ///
        private void bsearch_Click(object sender, EventArgs e)
        {
            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                search1.Items.Add(port);
            }
        }
 
//// recevoir les données /////
        string t;
        private void bdonnee_Click(object sender, EventArgs e)
        {
            t = search1.Text.ToString();
            sErial(t);
        }
        //
        SerialPort sp;
        void sErial(string Port_name)
        {
            sp = new SerialPort(Port_name, 9600, Parity.None, 8, StopBits.One);
            sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            sp.Open();
        }
        private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            string w = sp.ReadLine();
            string msg = sp.ReadExisting();
            if (w != String.Empty)
            {
                Invoke(new Action(() => tbRX.AppendText(w)));
            }
        }
//// envoyé les données /////
        private void bsend_Click(object sender, EventArgs e)
        {
            string t = search1.Text.ToString();
            string s = tbTX.Text.ToString();
            sErial(t, s);
 
        }
 
        void sErial(string Port_name, string data_send)
        {
            SerialPort sp = new SerialPort(Port_name, 9600, Parity.None, 8, StopBits.One);
            sp.Open();
 
            sp.Write(data_send);
            sp.Close();
        }
//// effacer tout /////
        private void bclear_Click(object sender, EventArgs e)
        {
            tbTX.Clear();
            tbRX.Clear();
        }
    }
}