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 :

Détection de fin de buffer


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Détection de fin de buffer
    Bonjour,

    Je construit un buffer tournant de 256 octets dans lequel un pointeur Head vient pointer ma valeur.

    J'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    byte LAR[256]
    byte *Head
     
    /* dans une phase d'init */
    Head = LAR;
     
    /* Dans le remplissage du buffer (sous interruption) */
     
    Head++;   // incrémente le pointeur
     
    // si mon pointeur dépasse la fin du buffer, pointe au début 
    if (Head=??) {Head=LAR;}
    Dans cette dernière ligne, je n'ai pas trouvé la syntaxe pour savoir si mon pointeur a dépassé la fin du buffer.

    J'ai essayé LAR+$100, une valeur absolue connue, à chaque fois ça ne compile pas (Erreur de syntaxe ou pb de compatibilité de scalaire) .

    PS J'utilise le compilateur C18


    Merci

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Il faut que tu utilises une variable en plus pour savoir sur quel élément du tableau LAR tu te trouves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int index = 0;
    Head++;   // incrémente le pointeur
    index++;
    // si mon pointeur dépasse la fin du buffer, pointe au début 
    if (index == sizeof(LAR)) {
       Head = LAR;
    }

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Head == LAR + SIZE_LAR)
    {
        Head = LAR;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos solutions, c'est OK
    A bientôt
    EG.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 340
    Points : 379
    Points
    379
    Par défaut
    Tu peux aussi définir le dernier élément de ton tampon avec une valeur spéciale comme pour les chaînes de caractère, tant que tu n'as pas atteint cette valeur tu n'est pas arrivé à la fin.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Citation Envoyé par prodexys Voir le message
    if (Head=??) {Head=LAR;}[/CODE]

    J'ai essayé LAR+$100, une valeur absolue connue, à chaque fois ça ne compile pas (Erreur de syntaxe ou pb de compatibilité de scalaire) .
    Il manque un = dans la condition ("Head==??").

    Ensuite, je ne pense que « $100 » soit une syntaxe C. « 0x100 », à la limite. Je ne sais pas s'il y a des compilos qui la reconnaissent, mais la dernière fois que j'avais écrit un nombre hexa de cette manière, c'était sur un assembleur Motorola ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection de fin de vidéo qui ne fonctionne pas
    Par Msieurduss dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 12/05/2009, 14h45
  2. Problème de détection de fin de musique
    Par lolilola dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 30/10/2008, 05h12
  3. [Fortran 90] Détection de fin de fichier
    Par Invité dans le forum Fortran
    Réponses: 3
    Dernier message: 17/04/2008, 11h43
  4. [NASM] Détection de fin de fichier
    Par andromeda dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/04/2007, 19h01
  5. [Système] Détection de fin d'exécution
    Par Xris dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2007, 10h15

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