begin process at 2008 07 06 12:57:53
1 205 545 membres
122 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GESTION D'UN TABLEAU AVEC POINTEURS.


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 20/12/2004 Date de mise à jour : 25/05/2005 11:52:24 Vu : 2 367

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

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

Source

  • 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.
  • }
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
20 décembre 2004 11:30:54 :
20 décembre 2004 11:34:36 :
25 mai 2005 11:52:24 :
Ajout de la description de la source.

Sources du même auteur

    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS