El valor máximo de número entero de NodeMCU Lua es 2 ^ 31
Lua 5.1.4 en SDK 3.0.1-dev (fce080e) Intentando usar node.dsleepMax () y está devolviendo un número realmente menor (147324921). Luego intenté configurar manualmente el tiempo de suspensión en node.dsleep en el valor máximo de 32 bits (4294967295) y solo permaneció durmiendo durante unos 30 minutos más o menos.
Intenté lo siguiente:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
que es 2 ^ 31 -1.
También hizo un bucle agregando a una variable, y se vuelve negativo cuando llega a 2 ^ 31.
Preguntas:
- ¿Por qué la variable se ajusta a 2 ^ 31?
- ¿No se supone que node.dsleep debe aceptar un valor de 64 bits con SDK 2.1 y superior?
Saludos,
Cesar
Respuestas
Ya recibiste algunos comentarios sobre int vs. float. En cuanto a dsleep
la documentación no establece explícitamente que acepta valores de 64 bits, pero eso es lo que está sucediendo segúnhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (desde abril de 2018).