Pages: [1]   Go Down
Author Topic: Aidez moi à comprendre ce programme  (Read 794 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 15
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin  

1)
Code:
if ((c == '\b') && idx) {
                        idx--;
                                Serial.print(c);
                  }
Il teste si "c" est egal à "\b" et si idx ???


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


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


3)
Code:
  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.



Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 16
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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é

Logged

France
Online Online
Faraday Member
**
Karma: 36
Posts: 3420
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Massongex, Suisse
Offline Offline
Full Member
***
Karma: 3
Posts: 169
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote

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.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 15
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous de vo réponses  smiley-wink
Logged

Pages: [1]   Go Up
Jump to: