Go Down

Topic: Aidez moi à comprendre ce programme (Read 958 times) previous topic - next topic

stolken

Bonjour à tous,
J'ai acheté un shiel RTC + connecteur carte SD chez nuelectronics et j'ai beaucoup de mal à comprendre le programme de demo, il n'est pratiquement pas commenté.

http:// http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=20&zenid=f266e6431a26ef3607ce1da1629c839a.

Voici les points sur lequel je bloque, si quelq'un avait l'amabilité d'éclairer ma lanterne  :D  

1)
Code: [Select]
if ((c == '\b') && idx) {
                       idx--;
                               Serial.print(c);
                 }

Il teste si "c" est egal à "\b" et si idx ???


2)
Code: [Select]
static void get_line (char *buff, byte len)

A quoi sert "static" ?
A quoi sert "*" devant le nom de la variable ?


3)
Code: [Select]
  sprintf_P(buff, PSTR("SD CARD mount error"));
A quoi sert PSTR ?
Meme question pour sprintf_P.

PS : j'ai googliser mais je ne trouve rien de convaincant en français sur ces 3 points la.

Merci d'avance.




NO0X

if ((c == '\b') && idx) {
sa reviens à mettre if ((c == '\b') && idx == true) {

Pour les variables static :
http://en.wikipedia.org/wiki/Static_variable
Et pour "*" c'est un pointer :
http://www.cplusplus.com/doc/tutorial/pointers/

sprintf_P je sais pas trop, c'est apparemment comment sprintf_c :
http://www.rowleydownload.co.uk/documentation/avr_2_0/hcc_libc_sprintf_c.htm
et PSTR je sais pas trop non plus désolé


fdufnews

Quote
if ((c == '\b') && idx) {
sa reviens à mettre if ((c == '\b') && idx == true) {
pas tout à fait "idx non nul". Effectivement si idx est un booléen c'est TRUE parce que TRUE est défini comme valant 1 dans wiring.h. Mais si idx est un entier c'est toute valeur différente de 0.

churchill

Salut,
Quote
sprintf_P(buff, PSTR("SD CARD mount error"));

PSTR permet de créer une chaine de caractère dans l'espace PROGMEM et pas dans la RAM du microcontrolleur (et donc d'économiser cette précieuse RAM). Le problème est que sprintf ne sait afficher que des caractères en RAM, donc sprintf_P copie automatiquement la chaine de PROGMEM en RAM et la passe à sprintf (en gros, et sauf erreur).
Plus d'infos sur avrfreaks (in english)

Churchill

gege2061

Quote
Pour les variables static :
http://en.wikipedia.org/wiki/Static_variable


Il ne s'agit pas d'une variable mais d'une fonction statique. Dans ce cas, c'est pour indiquer que la fonction ne peut être utilisée que dans le fichier source où elle est déclarée.

stolken


Go Up