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
|
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
receptionTrame(); //Réception de la trame émise via le port série
BeginInvoke(new InvokeDelegate(invokeLectureTxt));
}
private void receptionTrame()
{
string msg=""; //Message Recu
byte[] ACK = new byte[1]; //Tableau de byte afin d'envoyer en Hexadecimal
ACK[0] = 0x06; //Valeur de retour de trame ACK = 0x06 (ETX = 0x03)
string hex = "";
char[] test = new char[77];
int i = 0;
msg = serialPort1.ReadExisting();
//msg = serialPort1.ReadLine(); //Lecture de la donnée recu
msg = msg.Replace("\0", "");
trameRecu = msg;
BeginInvoke(new InvokeDelegate(invokeReception)); //Affiche dans la textBox la trame recu
//Si la trame recu ne contient qu'un seul caractère alors on transforme le caractere ASCII en valeur Hexa
if (msg.Length == 1)
{
char msg1 = Convert.ToChar(msg); //Transforme le Msg(String) en Char
int value = Convert.ToInt32(msg1); //Transforme le Char en Int
hex = String.Format("{0:X}", value); //Convertit le Int dans sa valeur Hexa
string hex2 = String.Format("{0:X}", "6"); //Format la chaine au format Hexa
if (hex == "3")
{
serialPort1.Write(ACK, 0, 1); //Retourne 0x06 à l'emeteur de 0x03
}
} |
Partager