La valeur maximale de l'entier NodeMCU Lua est 2 ^ 31
Lua 5.1.4 sur SDK 3.0.1-dev (fce080e) Essayer d'utiliser node.dsleepMax () et il renvoie un nombre vraiment plus petit (147324921). Ensuite, j'ai essayé de régler manuellement le temps de sommeil dans node.dsleep sur la valeur maximale de 32 bits (4294967295) et il n'est resté en sommeil que pendant environ 30 minutes.
J'ai essayé ce qui suit:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
qui est 2 ^ 31 -1.
Une boucle a également été ajoutée à une variable, et elle devient négative lorsqu'elle atteint 2 ^ 31.
Des questions:
- Pourquoi la variable s'enroule-t-elle à 2 ^ 31?
- Nœud.dsleep n'est-il pas censé accepter une valeur 64 bits avec SDK 2.1 et supérieur?
Cordialement,
César
Réponses
Vous avez déjà des commentaires concernant int vs float. Quant à dsleep
la documentation, elle n'indique pas explicitement qu'elle accepte les valeurs 64 bits, mais c'est en effet ce qui se passe selonhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (depuis avril 2018).