IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[PIC] Afficher une trame arrivant sur le port série


Sujet :

C

  1. #21
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut
    C'est normal qu'il n'y ait pas point virgule à la fin de cette ligne? Ca, ça peut provoquer un syntax error.

  2. #22
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    même en ajoutant le ; j'ai toujours le syntax error au même endroit

  3. #23
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    tu as 2711 lignes de code dans ton fichier?

  4. #24
    Invité(e)
    Invité(e)
    Par défaut
    Et en supprimant la parenthèse en trop ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(reception, "*Hello")) == 0)
    Pour finalement avoir :
    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 */
    }

  5. #25
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    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 )

  6. #26
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    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 */

  7. #27
    Invité(e)
    Invité(e)
    Par défaut
    Et si tu ajoutes un '(char)' ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reception[size] = (char) '\0';
    EDIT : C'est quoi ton compilateur ?

  8. #28
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    désolé même avec le char, j'ai l'erreur Warning [2066] type qualifier mismatch in assignment

  9. #29
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    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,

  10. #30
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    1796 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadStringUART((BYTE *)reception, sizeof(reception - 1));
    Attention aux parenthèses :

    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);

  11. #31
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par diogene Voir le message
    Attention aux parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ReadStringUART((BYTE *)reception, sizeof(reception) - 1);
    Attention à l'opérateur sizeof :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReadStringUART((BYTE *)reception, (sizeof reception) - 1);
    --> http://emmanuel-delahaye.developpez....tique-c/#LIV-L
    Dernière modification par Jerome Briot ; 15/10/2010 à 23h41.

  12. #32
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Oui, c'est une autre possibilité.

    Que reproches-tu à sizeof(reception) - 1, mis à part que les parenthèses sont inutiles ?

  13. #33
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    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


  14. #34
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    ne définit pas BYTE mais LCDText comme un tableau de BYTE

    Dans quel .h est déclaré ReadStringUART ?

  15. #35
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    Voici ce que j'ai trouvé

    dans uart.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char ReadStringUART(unsigned char *Dest, unsigned char BufferLen)
    et dans helpers.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BYTE ReadStringUART(BYTE *Dest, BYTE BufferLen);

  16. #36
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut
    j'ai peut être trouvé un élement de réponse

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(reception, (char *)"Hello") == 0)
    La compilation se passe bien : pas d'erreur, ni de warning mais lorsque je j'envoi sur le port série la trame attendue : Hello

    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.

Discussions similaires

  1. Comment attendre une trame sur le port série ?
    Par petitclem dans le forum C++
    Réponses: 55
    Dernier message: 17/07/2008, 10h16
  2. Réponses: 0
    Dernier message: 24/06/2008, 16h12
  3. affecter une adresse ip sur chaque port du switch
    Par blagapart dans le forum Développement
    Réponses: 1
    Dernier message: 08/08/2005, 18h42
  4. Afficher une texture "pleine" sur un support non c
    Par Mastero dans le forum DirectX
    Réponses: 20
    Dernier message: 27/01/2005, 13h28
  5. afficher une ligne contante sur le graphe d'un DBChart ?
    Par bigfoot dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/12/2004, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo