Максимальное целочисленное значение NodeMCU Lua - 2 ^ 31

Aug 19 2020

Lua 5.1.4 в SDK 3.0.1-dev (fce080e) Пытается использовать node.dsleepMax (), и он возвращает действительно меньшее число (147324921). Затем я попытался вручную установить время сна в node.dsleep на 32-битное максимальное значение (4294967295), и он оставался спящим только около 30 минут или около того.

Пробовал следующее:

    sleeptime = 4294967295
    > 
    =print(sleeptime)

2147483647

что составляет 2 ^ 31-1.

Также был добавлен цикл к переменной, и он становится отрицательным, когда достигает 2 ^ 31.

Вопросов:

  1. Почему переменная оборачивается на 2 ^ 31?
  2. Разве node.dsleep не должен принимать 64-битное значение с SDK 2.1 и выше?

С Уважением,

Цезарь

Ответы

MarcelStör Aug 20 2020 at 06:47

У вас уже есть отзывы о int и float. Что касается dsleep документации , явно не указано, что она принимает 64-битные значения, но это действительно то, что происходит в соответствии сhttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (с апреля 2018 г.).