Bonjour à tous,
Pour un TPE au lycée cette année je me suis lancé dans la programmation d'un robot en C.
Je peux communiquer avec ce robot via une interface branchée sur le port série COM1, et un code source récupéré sur le net avec la fonction main vide.
J'ai une erreur lors de la communication avec cette interface, mais je ne parviens pas à savoir laquelle.
Dans le code source ci dessous, voyez que dans ma fonction main j'aimerai ouvrir la communication, puis contrôler les erreurs, puis émettre un caractère, puis contrôler les erreurs etc.
La variable g_ErrCom récupère apparament les erreurs, mais je ne sais pas comment l'interroger, puisqu'elle fonctionne apparement avec e_ErrCom qui est une "type enum" et que je ne connais pas le fonctionnement de ce type.
Si vous pouviez m'aider à voir comment je pourrais récupérer les erreurs, ce serait sympa. Merci beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Définition du code d'erreurs typedef enum { e_ErrCom_None, // Pas d'erreur e_ErrCom_Creation, // Erreur lors de la création du flux e_ErrCom_Utilise, // Le port com est déjà utilisé e_ErrCom_Inexistant, // Le port com n'existe pas e_ErrCom_Timeout, // Timeout lors d'une émission-réception e_ErrCom_Emission, // Erreur lors de l'émission e_ErrCom_Reception, // Erreur lors de la réception e_ErrCom_Definition_Trame, // Erreur de définition de la trame e_ErrCom_Nack, // Demande non prise en compte e_ErrCom_Checksum // Erreur de checksum } e_ErrCom;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48 int main (void) { /* Variable qui va contenir les caractères reçus */ unsigned int je_recois=0; /* Variable qui rapporte le nombre de caractères lus */ unsigned int ai_lu=0; /* Configuration du port serie : * Communication sur le port COM1 * Débit de 9600 bits/s * 8 bits de données * Pas de bit de parité * 2 bits d'arrêt */ g_ErrCom=OuvreCom(PORT1,V9600,BITS_8,PAS_DE_PARITE,BIT_DE_STOP_2); /* On contrôle si l'ouverture du port ne retourne pas d'erreur */ /* DEFINIR UN CODE ICI */ /* Envoi du caractère L qui interroge * le robot sur la position de ses axes */ g_ErrCom=EmissionCom("L",sizeof("L")); /* On contrôle si l'émission au port ne retourne pas d'erreur */ /* DEFINIR UN CODE ICI */ /* Réception des coordonées des axes * C'est une série de 20 chiffres */ g_ErrCom=ReceptionCom(&je_recois ,20, &ai_lu); /* On contrôle si la réception ne retourne pas d'erreur */ /* DEFINIR UN CODE ICI */ /* Affiche : * Le nombre de caractères reçus * Les caractères reçus */ printf("Nombre de caracteres recus : %d \nCaracteres recus : %d",ai_lu,je_recois); /* Attente de l'appui d'une touche */ getch(); /* Le programme renvoie 0 * pour signaler qu'il s'est terminé de manière correcte */ return 0; }
Partager