Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Donner un Nom evolutif à une variable
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#21 Message par Jérémy » ven. 12 févr. 2016 17:35

Re,

Alors voila , je vous passe les détails du programme et ne met que l'essentiel . Il s'agit du programme de test , rien n'est optimisé hein ...

Code : Tout sélectionner


char txt2
[7];
char txt[20];
unsigned short Index_Buffer, tmp, DataReady, i, j;
char CMD_mode, BT_state, response_rcvd, responseID, response = 0 ;
unsigned short variable0, variable1, variable2 ;
unsigned int somme;

// Interruption
void interrupt(){
  if (RCIF_bit == 1) {                          // Do we have uart rx interrupt request?
    tmp = UART1_Read();                          // Get received byte

  if (CMD_mode){
        ...
  }
  
  else 
{
    if (tmp == 13) {
      txt[Index_Buffer] = 0;       // Terminateur de string
      DataReady = 1;               // Une donnée à été reçue et est prête
    }
    else {
      txt[Index_Buffer] = tmp;    // On place la donnée dans le tableau txt[]
      Index_Buffer++;             // Incrémente l' du tableau
     }
    RCIF_bit = 0;                            // Disable UART RX interrupt
  }
  }
}
.......
while (1) {

    if (DataReady)              // Si une donnée est recue
      {
         GIE_bit  = 0;               // Interdit les Interutpions
         DataReady = 0;              // RAZ le flag

         LCD_Cmd(_LCD_CLEAR);        // Efface l'ecran
         Lcd_Out(1,1,"Received:");   // Display message
         Lcd_Cmd(_LCD_SECOND_ROW);   // Write in second row
         Index_Buffer = 0;           // Reset counter

         variable0 = txt[7];
         variable1 = txt[9];
         variable2 = txt[11];
         somme =  variable0 + variable1 + variable2;

         PORTD = somme;

         IntToStr (somme,txt2);
         Lcd_Out(2,1,txt2);

         Index_Buffer = 0;           // Raz l'index du buffer
         memset(txt, 0, 16);         // Clear array of chars
         GIE_bit = 1;                // Active les INT sur reception UART
   }
 }



Voila la partie App inventor . J'ai rajouter le mot chrono devant , pour différencier par la suite , l'envoie ou l’arrêt ou tout autre option . Ainsi quand on reçoit "chrono" on sait ou se trouve nos valeurs à interpréter.
Image

Ce programme fonctionne très bien . ( a part le premier appui sur le bouton qui bug , ensuite tout rentre dans l'ordre).
J'ai bien la somme de toute mes valeurs qui s'affiche sur le LCD et le PORTD
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Donner un Nom evolutif à une variable
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#22 Message par paulfjujo » ven. 12 févr. 2016 18:56

bonsoir,



A la vue de ton programme Appinventor , je comprends mieux le different ..

dans un poste precedent tu disais envoyer
;1;42;25
dans la mesure ou je vois un ; j'en ai deduit que c'etait une chaine de caractere
donc par exemple 42 => 2 caracteres

alors que tu envoies finalement des Bytes
1 byte pour 59 (le ; )
1 byte pour la valeur 1
1 byte pour le ;
1 byte pour la valeur 42
.. etc ...

auquel cas, effectivement il n'y a pas besoin de faire des transformation ascci -> numerique

par contre il manque les multiplication par 3600 et 60 pour la somme en secondes
somme = (int) variable0 *3600 + variable1 *60 + variable2;
Aide toi, le ciel ou FantasPic t'aidera

Donner un Nom evolutif à une variable
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#23 Message par Jérémy » ven. 12 févr. 2016 19:11

Ouf finalement on se comprends ! :D

je passerai sur l'autre fil celui de achileTpour la suite ; car on déborde un peu ici .
Je galere avec les zones de texte sous app inventor . a les traiter quand elles sont vides par exemple .
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Donner un Nom evolutif à une variable
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#24 Message par paulfjujo » sam. 13 févr. 2016 15:23

bonjour,


suite à cette perte d'energie des 2 bords .. (mais quand meme instructive par ailleurs)

Remarque à peut etre à deplacer dans langage C general ?

D'où l'utilité de bien formaliser l'ecriture
par ex : sous cette forme pour une serie d'envoi de datas numeriques :
59,1,59,45,59,23,59
on devrait comprendre que la virgule ici , designe simplement la separation des nombres , et non une donnee
Question: est-ce evident pour tout le monde ?

ou dans le cas d'un string , reconnaissable par les 2 guillements
";1;45;23;"
tout ce qui est entre les guillement sont des caracteres (au format ascii)
Là je pense qu'il n'y a pas d'ambiguité .
Question: est-ce là aussi, evident pour tout le monde ?

On pourrait y rajouter d'autres items.. du meme genre

surmikroE
j'ai posé une question sur strok et le parametre dit "separateur" .. mais là on parle de chaine ascii (string)
Avantage pour strok , par rapport à une recherche char par char,
strok evite les "espaces vides" entre les separateurs.


Penses tu publier ton appli Appinventor2 ou poster le fichier *.aia sur ce forum ?
Aide toi, le ciel ou FantasPic t'aidera

Donner un Nom evolutif à une variable
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#25 Message par Jérémy » sam. 13 févr. 2016 16:20

Je suis d'accord qu'il faut bien formaliser l’écriture, mais n'étant pas encore très à l'aise j'avoue m'embrouiller les pinceaux avec l'acsii les strings et tout, et tout , ça commence à venir mais je pense qu'il me manque encore un peu de travail .

Penses tu publier ton appli Appinventor2 ou poster le fichier *.aia sur ce forum ?

j'ai pas mal avancer sur l'application, maintenant j'arrive a recevoir des données . Il me reste la mise en forme qui reste compliqué quand on travaille avec des choses basiques et la vérification des erreurs de saisis .

Je posterais le tout le fichier mais je ne suis pas pour poster des fichiers peu de gens sont intéresser par le téléchargement? On est à l'heure ou tout va trés vite, il faut avoir un aperçu tout de suite ; Je mettrais donc aussi des screen de l'application ;

Mais surtout je ferais un tuto App inventor dédié à la communication avec un PIC .
Puis un tuto sur le module bluetooth RN-41
Puis enfin un projet de prise électrique connecté si achileT ne donne pas signe de vie ; Car j'en aurais moi aussi l'utilité
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 22 invités