Gestion d'erreurs

Résolu
cs_Dude54 Messages postés 3 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 14 juin 2010 - 14 juin 2010 à 12:56
cs_Dude54 Messages postés 3 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 14 juin 2010 - 14 juin 2010 à 13:59
Bonjour à tous .

J'ai écris un programme qui permet d'envoyer des trames vers un panneau lumineux afin d'y afficher des informations.

Il fonctionne parfaitement, seulement j'aimerais pouvoir gérer les erreurs, par exemple en affichant un message quand le programme ne reçoit pas de réponse du panneau.

J'ai déjà traité le cas du port COM avec un try catch :

//J'initialise le port série:
            SerialPort Port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
            try
            {
                //ouverture du port:
                Port.Open();
            }
            catch (Exception)
            {
                Console.WriteLine("L'ouverture du port série à échouée !");
                Console.WriteLine("veuillez vérifier que l'ordinateur et le panneau sont correctement reliés.");
                Console.Read();
                System.Environment.Exit(0);
            }


Seulement ça ne fonctionne pas pour les réponses que le programme reçoit après chaque envoi.

J'utilise un "Read" pour lire les trames de réponses qui doivent toujours être "01 06" et j'aimerais que si le programme ne reçoit aucune réponse ou une réponse diffèrente, un message d'alerte apparaisse.

//envoi de la première trame au panneau:
            Port.Write(trame_1, 0, trame_1.Length);
            Thread.Sleep(500);
            //lecture de la réponse envoyée par le panneau:
            Port.Read(recu, 0, 2);


Sinon éxiste t'il une commande qui permettrait de lire pendant un certain laps de temps et que si pdt cet interval, le panneau n'envoi aucune réponse alors le programme affiche un message ?

Merci de votre aide.

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 juin 2010 à 13:57
Non, au bout du temps que tu fixe, si ton instruction Port.Read n'a toujours pas rendu la main parce qu'elle n'a rien lu, cela génèrera une exception et donc un message d'erreur si tu ne fais rien de particulier. Tu peux donc mettre en place un Try..Catch pour intercepter et gérer l'erreur pour éventuellement afficher ton propre message


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 juin 2010 à 13:19
Utilise la propriété ReadTimeout pour définir le temps d'attente maxi de la lecture


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
cs_Dude54 Messages postés 3 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 14 juin 2010
14 juin 2010 à 13:53
merci beaucoup casy, je vais essayer ça.

Par contre avec cette méthode il n'est pas possible d'afficher un message si je ne reçois rien, ça passera directement à l'instruction suivante à la fin du temps ?
0
cs_Dude54 Messages postés 3 Date d'inscription mardi 23 février 2010 Statut Membre Dernière intervention 14 juin 2010
14 juin 2010 à 13:59
D'accord, c'est pile ce que je cherche à faire.

Merci
0
Rejoignez-nous