Bonsoir
Voici un exemple pour envoyer 2 trames de texte ASCII:
SerialPort rs;
private void button1_Click(object sender, EventArgs e) // A mettre dans un bouton//
{
rs = new SerialPort("COM1",9600,Parity.None,8,StopBits.None);
rs.Write("Coucou");//juste coucou est envoyé
Thread.Sleep(500);//on fait une pause de 500 ms avant le prochain envoi
rs.WriteLine("Comment ça va?");//rs va rajouter un fin de ligne à la fin,d'ou writeLine
}
A toi de configurer le port com, comme il faut.
Ensuite, sur un second PC ou sur le même si tu as 2 port com, (il faut les relier)
dans le load
SerialPort rs;
private void Form1_Load(object sender, EventArgs e)
{
rs = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.None);
rs.DataReceived += rs_DataReceived;//on s'abonne à l'évènement de la classe qui signal que quelque chose est arrivé
//......
}
void rs_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (rs.BytesToRead > 0)//on vérifie qu'il y a bien quelque chose à lire
{
//Option 1 tes trames ne sont pas des lignes
Thread.Sleep(100);//on attend un peu, les données RS n'arrivent pas toujours bien en même temps
byte[] buffer = new byte[rs.BytesToRead];//on initialise un tableau de bytes pouvant contenir ce qu'il y a dans le tampon du port
rs.Read(buffer, 0, rs.BytesToRead); //on vide le tampon dans le tableau
//A toi de faire le traitement, dans le cas de mon exemple, c'est assez simple
string texte = ASCIIEncoding.ASCII.GetString(buffer);
switch(texte)
{
case "Coucou":
MessageBox.Show("J'ai reçu coucou");
break;
case "Comment ça va?\r\n"://il faut vérifier la valeur de rs.newLine
MessageBox.Show("J'ai reçu une ligne");
break;
default:
MessageBox.Show("J'ai reçu autre chose");
break;
}
return;
//si tu veux essayer l'option 2, il faut commenter toute l'option 1
//Option 2, tes trames sont des lignes, il faut que le fin de ligne de chaque PC soit le même
//ReadLine va attendre de recevoir le fin de ligne pour tout lire d'un coup
string texte2 = rs.ReadLine();
MessageBox.Show("J'ai reçu la ligne: " + texte2);
}
}