El valor máximo de número entero de NodeMCU Lua es 2 ^ 31

Aug 19 2020

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:

  1. ¿Por qué la variable se ajusta a 2 ^ 31?
  2. ¿No se supone que node.dsleep debe aceptar un valor de 64 bits con SDK 2.1 y superior?

Saludos,

Cesar

Respuestas

MarcelStör Aug 20 2020 at 06:47

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