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 }
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); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question