O valor máximo do inteiro NodeMCU Lua é 2 ^ 31

Aug 19 2020

Lua 5.1.4 no SDK 3.0.1-dev (fce080e) Tentando usar node.dsleepMax () e está retornando um número bem menor (147324921). Em seguida, tentei definir manualmente o tempo de suspensão em node.dsleep para o valor máximo de 32 bits (4294967295) e ele permaneceu dormindo por cerca de 30 minutos ou mais.

Tentei o seguinte:

    sleeptime = 4294967295
    > 
    =print(sleeptime)

2147483647

que é 2 ^ 31 -1.

Também fez um loop adicionando a uma variável, que se torna negativo quando atinge 2 ^ 31.

Questões:

  1. Por que a variável está agrupada em 2 ^ 31?
  2. O node.dsleep não deveria aceitar um valor de 64 bits com SDK 2.1 e superior?

Saudações,

Cesar

Respostas

MarcelStör Aug 20 2020 at 06:47

Você já recebeu algum feedback sobre int vs. float. Quanto dsleep à documentação não afirma explicitamente que aceita valores de 64 bits, mas isso é realmente o que está acontecendo de acordo comhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (desde abril de 2018).