C'est normal qu'il n'y ait pas point virgule à la fin de cette ligne? Ca, ça peut provoquer un syntax error.
Code : Sélectionner tout - Visualiser dans une fenêtre à part reception[size] = '\0'
C'est normal qu'il n'y ait pas point virgule à la fin de cette ligne? Ca, ça peut provoquer un syntax error.
Code : Sélectionner tout - Visualiser dans une fenêtre à part reception[size] = '\0'
même en ajoutant le ; j'ai toujours le syntax error au même endroit
tu as 2711 lignes de code dans ton fichier?
Et en supprimant la parenthèse en trop ?Pour finalement avoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (strcmp(reception, "*Hello")) == 0)
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 /* ReadStringUART : ne travaille qu'en BYTE : les messages récupérés ne peuvent faire plus de 127 ou 255 caractères (suivant si BYTE est signée ou non) Pour ne pas prendre de risque, je me limite à 64.*/ char reception[64]; BYTE size; /* on récupère la trame */ size = ReadStringUART((BYTE *)reception, sizeof reception - 1); /* on fait en sorte que reception devienne une chaine de caractères valide */ reception[size] = '\0'; /* et on peut utiliser strcmp sans risque */ if (strcmp(reception, "*Hello") == 0) { /* faire des choses */ }
oui 2845 lignes, c'est une pile ethernet pour Pic avec plusieurs modules et plusieurs macro selon le type de Pic utilisé. ( ce n'est pas moi l'ai écrit )
mabu,
avec la parenthèse supprimée, j'obtiens : main.c:2710:Warning [2066] type qualifier mismatch in assignment
et de nouveau, c'est cette ligne qui est pointée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part /* et on peut utiliser strcmp sans risque */
Et si tu ajoutes un '(char)' ?
EDIT : C'est quoi ton compilateur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part reception[size] = (char) '\0';
désolé même avec le char, j'ai l'erreur Warning [2066] type qualifier mismatch in assignment
Je poste ci-joint la globalité de mon projet :
projet.zip
la partie du code qui pose pb se trouve dans main.c à partir de la ligne 1793
le répertoire uart contient les fichiers pilote de l'uart.
Actuellement le compilateur indique : main.c:1796 :Error: syntax error
Peut etre pourrez vous m'aider davantage avec le projet complet, je suis vraiment bloqué.
Merci de votre aide,
1796 :Attention aux parenthèses :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReadStringUART((BYTE *)reception, sizeof(reception - 1));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ReadStringUART((BYTE *)reception, sizeof reception - 1); // ou ReadStringUART((BYTE *)reception, sizeof(reception) - 1);
Attention à l'opérateur sizeof :
--> http://emmanuel-delahaye.developpez....tique-c/#LIV-L
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReadStringUART((BYTE *)reception, (sizeof reception) - 1);
Dernière modification par Jerome Briot ; 15/10/2010 à 23h41.
Oui, c'est une autre possibilité.
Que reproches-tu à sizeof(reception) - 1, mis à part que les parenthèses sont inutiles ?
Merci Diogene,
Cependant j'ai toujours le warning Warning [2066] type qualifier mismatch in assignment
le compilateur pointe alors cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part // et on peut utiliser strcmp sans risque */
Est ce que BYTE ne doit etre défini qu'une seule fois ?
à la ligne 188, BYTE est défini pour une utilisation Textbox / afficheur LCD
Code : Sélectionner tout - Visualiser dans une fenêtre à part BYTE LCDText[16*2+1];
ne définit pas BYTE mais LCDText comme un tableau de BYTE
Code : Sélectionner tout - Visualiser dans une fenêtre à part BYTE LCDText[16*2+1];
Dans quel .h est déclaré ReadStringUART ?
Voici ce que j'ai trouvé
dans uart.c :
et dans helpers.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part unsigned char ReadStringUART(unsigned char *Dest, unsigned char BufferLen)
Code : Sélectionner tout - Visualiser dans une fenêtre à part BYTE ReadStringUART(BYTE *Dest, BYTE BufferLen);
j'ai peut être trouvé un élement de réponse
avecLa compilation se passe bien : pas d'erreur, ni de warning mais lorsque je j'envoi sur le port série la trame attendue : Hello
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (strcmp(reception, (char *)"Hello") == 0)
rien ne se passe, l'action à effectuer n'est pas exécutée.
Je pense que c'est l'utilisation de ReadStringUART qui doit poser pb.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager