Je cherche la manière de compter le nombre de caractères présents dans une variable de type texte (string je crois ?) afin d'afficher cela sur un LCD. Mais seulement le bon nombres de caractères et non pas toute une ligne avec des blancs.
Essayant de rentrer dans les entrailles des LCD avec MikroC et mon PIC 18F45K22, je test et re-test.
En fait je voudrais créer une routine qui m'affiche un texte, à partir d'un point de départ .
Je pense, ne pas avoir tout compris le système de pointeur, voici mon travail effectué jusqu' a présent .
Je créer un pointeur que je nomme text de cette façon :
Code : Tout sélectionner
char *text; // Création d'un pointeur nommé text Je vous passe les détails de l'initialisation du LCD .
Dans ma boucle principale j’écris ceci
Code : Tout sélectionner
//########################## BOUCLE INFINIE ##################################
while(1)
{
text = "essai" ; // mon texte à affiché
I2C1_Start(); // Ouverture d'une Com I2C
I2C1_Wr(LCD_ADR); // Envoi de l'adresse esclave
I2C1_Wr(0x00); // Byte de controle pour envoyer une instruction
I2C1_Wr(0x80); // INSTRUC : position de l'ADDR du curseur 1ere ligne de 80 à 8F
I2C1_Repeated_Start();// Repetition de l'ouverture de la com I2C
I2C1_Wr(LCD_ADR); // Envoi de l'adresse esclave
I2C1_Wr(0x40); // Byte de controle pour envoyer une DATA
for ( i=0;i<=4;i++)// Boucle pour répéter 5 fois l'action sur la premiere ligne
{
I2C1_Wr(0x80 + text[i] ); // Envoie une donnée
}
Delay_ms(1000);
I2C1_Stop();
}Avec ceci ça fonctionne !!
Voila ce que je crois comprendre:
- dans la première boucle , j'affiche "text[0]" qui correspond à la premier lettre de mon texte("e") d’après mon pointeur.
- la boucle suivante "i" est incrémenté donc j'affiche text[1], qui correspond à la deuxième lettre donné par le pointeur soit ("s")
|
|
-La dernière boucle "i" est encore incrémenté donc j'affiche text[4], qui correspond à ("i")
Malheureusement avec ce système je dois déterminé manuellement la longueur du TEXTE pour répété la boucle autant de fois que nécessaire, mais pas plus sinon des caractères hasardeux s'affiche ( sont dans la DDRAM de l'écran) et pas moins sinon je mange le texte. Dnas l'exemple grace à
Code : Tout sélectionner
for ( i=0;i<=4;i++) L’idée c'était de connaitre le nombre de caractères dans ma chaine ? auriez vous une idée sur comment compter ces lettres ?

