Bonjour;
mon projet consiste à réaliser une interface de communication envoi et réception des données entre mon pc et une commande d'axe via un port série avec C#.
pour le moment, je travail avec l'hyper terminal pour la communication.
pour l'envoi des données je dois télécharger un fichier sur mon bureau puis l'envoyer sur le port série, donc ça j'ai réussi à le faire.j'affiche tout les données dans l'hyper terminal.
mon blockage actuel est le suivant:
pour la reception des données j'ai mis en oeuvre l’événement Datareceived, quand j'essaye d'envoyer des données de puis l'hyper terminal il m'affiche dans ma textBox2 ça:
si tout ce qu'il s'affiche.
ps: la textBox2 si la ou je veux afficher les données en reception.
voila mon code:
pouvez-vous m'aider???
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 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { switch (e.EventType) { case SerialData.Chars: { if (!serialPort1.IsOpen) return; // Si le port est ouvert, le fermer int bytes = serialPort1.BytesToRead;// Obtenir le nombre d'octets en attente dans le tampon du port byte[] buffer = new byte[bytes]; // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes serialPort1.Read(buffer, 0, bytes); // Lire les données du port et de le stocker dans la mémoire tampon // timer1.Start(); string s = Reverse(ByteArrayToHexString(buffer)).Substring(0, 1); MethodInvoker method = delegate { textBox2.Text = string.Empty; // On vide le TextBox textBox2.Text=(buffer + "\r\n"); //textBox2.AppendText(bytes + "\r\n"); }; if (InvokeRequired) BeginInvoke(method); else method.Invoke(); // MessageBox.Show(s); break; } case SerialData.Eof: { serialPort1.Close(); break; } } } //Convertit un tableau d'octets en une chaîne formatée de chiffres hexadécimaux. private string ByteArrayToHexString(byte[] data) { StringBuilder sb = new StringBuilder(); foreach (byte b in data) sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' ')); return sb.ToString().ToUpper(); } static public string ReverseString(string str) { char[] charArray = str.ToCharArray(); Array.Reverse(charArray); return new string(charArray); } public static string Reverse(string text) { string retour = ""; string[] str = text.Split(' '); for (int i = 0; i < str.Length; i++) { retour += ReverseString(str[i]); retour += " "; } return retour; }
Partager