Gestion d'un tableau avec pointeurs.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 431 fois - Téléchargée 38 fois

Contenu du snippet

Cette source montre la gestion d'un Tableau avec des Pointeurs dans le Cas d'un Buffer de Réception USART.

Source / Exemple :


Auteur : VirtuA

unsigned char TabBuffer[103];  		//Tableau Buffer USART.
unsigned char longueurMess;		//Longueur du message.
unsigned char RECEPTION;		// petit buffer Reception.
unsigned char *PtrTabB = &TabBuffer[0];	//Pointeur init à l'origine du tableau Buffer.
unsigned char *PtrTabBMax = &TabBuffer[103];

void Aquisition (void)				
{				
if (longueurMess==1)
	{	
	PtrTabB++;		//Incremente le pointeur qui contient l'adresse.

  • PtrTabB=RECEPTION; //Le char pointé par PtrTab prend la valeur de RECEPTION.
if (PtrTabB == PtrTabBMax)//égalité des 2 pointeurs? { PtrTabB=&TabBuffer[0]; //reinti le pointeur Buffer. longueurMess=0; //baisse le flag. Identifiant(); } } else {PtrTabB=&TabBuffer[0]; PtrTabBMax = RECEPTION + &TabBuffer[0]; //init de la valeur du pointeur Max.
  • PtrTabB=RECEPTION;
longueurMess=1; //met le flag à 1! } } void Identifiant (void) //Routine => Identifiant. { if (TabBufferPC[1]==0x01) //COMMANDE XX { } if (TabBufferPC[1]==0x02) //COMMANDE YY { } // Mettre l'identification des Fonctions selon les TRames Reçu. }

Conclusion :


FORMAT de la trame Reçu:

<Otect Longueur TRame> <Identifiant Fonction> <Valeur de fonction>.

On peut par exemple imaginer 2 LED avec pour identifiant 0x01 pour la 1er et 0x02 pour la 2eme.
avec la valeur 0x00 pour Eteindre et 0x01 pour allumer.
donc:

<0x02><0x01><0x01> // Ceci allume la LED 1
<0x02><0x02><0x00> // Ceci éteind la LED 2

PS: c'est un protocole très basic sans contrôle mais il permet de se familiariser avec la gestion des pointeurs lors du traitement des la réception comme le montre ma source ci-dessus

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (virtua)