Bonjour, j'essaie actuellement de récupérer des données via un port série. En fouillant sur le forum j'ai réussi à faire un code qui me permet de récupérer les données. Les données proviennent d'une sonde de température et sont envoyées vers le port série via un microcontroleur. J'essaie de réaliser une petite interface qui permet de visualiser la température en temps réel. Le problème est qu'au moment de l'affichage dans la textbox, les données s'écrive les unes à la suite des autres. Sauriez-vous m'aider à finir ce projet relativement simple?
Voici 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 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 SerialComm { public partial class Form1 : Form { static SerialPort serialPort1; string RxString; public Form1() { serialPort1 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One); InitializeComponent(); serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); serialPort1.ReadTimeout = 500; } private void Form1_Load(object sender, EventArgs e) { } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { RxString = serialPort1.ReadExisting(); this.Invoke(new EventHandler(AfficherTextASync)); } private void AfficherTextASync(object sender, EventArgs e) { textBox1.AppendText(RxString); label1.Text = RxString; } //private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) //{ // string value = ""; // while (serialPort1.BytesToRead > 0) // { // char[] buffer = new char[255]; // int bytes_read = serialPort1.Read(buffer, 0, buffer.Length); // // string texte = serialPort1.ReadLine(); // for (int i = 0; i < bytes_read; i++) // { // value += buffer[i]; // } // } // safeInput(value.ToString()); //} //private void safeInput(string msg) //{ // textBox1.Invoke(new EventHandler(delegate // { // textBox1.SelectedText = string.Empty; // textBox1.AppendText(msg.ToString()); // textBox1.ScrollToCaret(); // })); //} private void button1_Click(object sender, EventArgs e) { serialPort1.Open(); } } }
Partager