2016-01-30 2 views
1

Bonjour, J'ai commencé à apprendre Java et j'essaie actuellement d'apprendre le C++. J'ai ce morceau de code et ne peux pas m'entraîner ce qu'il fait. Je suppose que cela fait attendre le programme pendant un certain temps avant qu'il ne commence. Mais quelques explications supplémentaires seraient très utiles.Que fait la fonction wait()?

J'ai ajouté des commentaires aux sections pour lesquelles j'aimerais avoir des explications supplémentaires.

for (;;) { 
     wait (0.02); //What does this do? 

     if (ab1_On) { 
      con += 104; 
      ab1_On = 0; //Why is the value reset to 0? 
     } 
     if (ab2_On) { 
      con += 208; 
      ab2_On = 0; //Why is the value reset to 0? 
     } 

     con++; 
     if (con > 311) { 
      con -= 312; 
     } 
     for (int i=0; i<3; i++) { 
      bright[i] = brilvl (con + (i * 104)); 
     } 
    } 
} 
+4

'wait' il n'y a pas une partie de C++ standard. Probablement, il est défini quelque part dans le programme que vous essayez de comprendre. A propos des variables: il y a peu de contexte et les variables ne sont pas un exemple de bonne dénomination, mais il semble que le code "éteint" ces variables, donc elles donneraient faux à l'itération suivante. –

+0

Ceci est un code horrible. À moins qu'il y ait une bonne raison de savoir ce qu'il fait, ne perdez pas votre temps avec ça. –

+0

@PeteBecker essentiellement c'est le code sur un périphérique mbed, je n'ai pas publié le code entier. De ce que je peux comprendre ab1 et ab2 sont des commutateurs et ils passent leur valeur à con quand ils sont allumés. Mais je ne peux pas voir la raison de l'attente(); fonction – user5647516

Répondre

2

wait() est une fonction définie dans le SDK mbed.

https://developer.mbed.org/handbook/Wait

Dans votre programme wait(0.02) bloque l'exécution pendant 20 millisecondes.

for (;;) est une boucle infinie, elle fonctionnera pour toujours. Le wait() peut être utilisé pour empêcher les effets de switch bounce si ab1_on et ab2_on sont réglés par un commutateur mécanique.

+0

Il va bloquer pendant 20 millisecondes, pas 2. 1s = 1000ms, donc 0.02s = 20ms. –

+0

Vous avez raison, c'était une faute de frappe. Je vais le corriger, merci d'avoir signalé cela. –