Simulation via hyperterminal

Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 13 mars 2017 à 16:33 - Dernière réponse : Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention
- 25 avril 2017 à 16:32
Bonjour, je travail actuellement avec un module Gadgeteer FEZ Spider pour un projet de fin de BTS. Ma partie consiste à écrire un programme C# pour réceptionner une trame par liaison série puis l'afficher sur un LCD graphique.
Je dois donc tout d'abord utiliser hyperterminal pour tester mon programme de réception de données.

J'ai tout compris sauf que : je n'ai jamais utilisé hyperterminal et pour le programme je suis un peu largué....
Si vous pourriez me donner un petit coup de pouce pour me dirigez car mon projet prend fin dans 5 semaines. Merci d'avance pour votre aide :)
Afficher la suite 

Votre réponse

25 réponses

Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 13 mars 2017 à 17:25
0
Merci
Bonjour,

si tu sais faire du rs en C#, écrit un petit petit programme de test, qui envoie les bonnes trames.

Sinon des tutoriels, pour utliser hypertmer y'en a plein le web.
Si tu as un problème avec le code, on t'aidera, mais t'apprendre à te servir d'un logiciel n'est pas le but de ce forum.
Commenter la réponse de Whismeril
Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 14 mars 2017 à 10:00
0
Merci
Merci de ta réponse !

Sincèrement là où je bloque vraiment c'est le programme de réception de trames...
Commenter la réponse de Artamonbya
Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 14 mars 2017 à 10:08
0
Merci
J'aimerai vraiment savoir quoi mettre comme fonction.
Je ne demande pas le programme en entier mais quelques info. Ça serait cool.
Commenter la réponse de Artamonbya
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 14 mars 2017 à 19:30
0
Merci
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);
            }
        }

Commenter la réponse de Whismeril
Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 15 mars 2017 à 08:35
0
Merci
Ah oui je vois ! Merci beaucoup je vais essayer et je te dit !
Commenter la réponse de Artamonbya
Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 20 mars 2017 à 10:40
0
Merci
Après je ne sais pas si ça rentre dans le thème de mon projet puisque je dois écrire un programme pour réceptionner des trames et non les envoyer...
Rappel moi ce que c'est ? lol
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 24 avril 2017 à 09:02
Erreur 6 'System.Text.Encoding' ne contient pas de définition pour 'ASCII'

et j'ai aussi cette erreur
pour le framework : version 4.5.50709
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 24 avril 2017 à 09:38
Autant Linq est apparue à la framework 3.5 (fin 2007), autant Encoding.Ascii existe depuis que le C# existe...

Puisque Linq plante au using et que using System.Text est présent cf ton message du 4 avril, ça ne peut vouloir dire qu'une chose, tu as bidouillé dans les références du projet et t'as viré celles qu'il ne fallait pas.
https://msdn.microsoft.com/en-us/library/system.text.encoding.ascii(v=vs.110).aspx
https://msdn.microsoft.com/fr-fr/library/system.linq(v=vs.110).aspx

Choisi la version de la page qui correspond à ta framework, et regarde dans quelle assembly se trouvent les objets

Et en plus tu utilises une vieille version de visual studio, là à la maison, j'ai Community 2013 (gratuit sous conditions) et même si je les enlèves, elles sont automatiquement remises à la génération, car se sont les références de bases du C#
Commenter la réponse de Artamonbya
Artamonbya - 24 avril 2017 à 10:53
0
Merci
SerialPort rs;
private object rs_Datareceived;
private void button1_Click(object sender, EventArgs e)
{

rs = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.None);

rs.Write("Coucou");
Thread.Sleep(500);
rs.WriteLine("Comment ça va?");
}

private void Form1_Load(object sender, EventArgs e)
{


rs = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.None);
rs.DataReceived = rs_Datareceived;
}


void rs_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (rs.BytesToRead > 0)
{
Thread.Sleep(100);

byte[] buffer = new byte[rs.BytesToRead];
rs.Read(buffer, 0, rs.BytesToRead);

Encoding ascci = Encoding.ASCII;

switch (texte)
{
case "Coucou":
MessageBox.Show("J'ai reçu coucou");
break;

case "Comment ça va?\r\n":
MessageBox.Show("J'ai reçu une ligne");
break;

default:
MessageBox.Show("j'ai reçu autre chose");

}

return;

string texte2 = rs.ReadLine();
MessageBox.Show("Jai reçu la ligne:" + texte2);

}
}


public string texte { get; set; }
}
}

Voila le programme
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 24 avril 2017 à 13:53
Et?
Artamonbya 12 Messages postés mardi 7 mars 2017Date d'inscription 25 avril 2017 Dernière intervention - 25 avril 2017 à 10:01
Y'a t'il une erreur ?
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 25 avril 2017 à 12:45
Apparement non
étrange...je pense que mon projet est mort alors
Whismeril 12120 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 octobre 2018 Dernière intervention - 25 avril 2017 à 16:32
Attends tu montres le code pour ton problème de using?

Je t'ai dit de vérifier les références de ton projet.
C'est dans les références du projet, pas dans le code.
Commenter la réponse de Artamonbya

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.