1 pièce(s) jointe(s)
DataReceived réception des données port série
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:
Pièce jointe 172911
si tout ce qu'il s'affiche.
ps: la textBox2 si la ou je veux afficher les données en reception.
voila mon code:
Code:
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;
} |
pouvez-vous m'aider??? :calim2: