Nilai maks integer NodeMCU Lua adalah 2 ^ 31
Lua 5.1.4 pada SDK 3.0.1-dev (fce080e) Mencoba menggunakan node.dsleepMax () dan mengembalikan angka yang sangat kecil (147324921). Kemudian saya mencoba mengatur waktu tidur secara manual di node.dsleep ke nilai maks 32-bit (4294967295) dan hanya tetap tidur selama sekitar 30 menit atau lebih.
Mencoba yang berikut ini:
sleeptime = 4294967295
>
=print(sleeptime)
2147483647
yaitu 2 ^ 31 -1.
Juga melakukan penambahan loop ke variabel, dan itu menjadi negatve ketika mencapai 2 ^ 31.
Pertanyaan:
- Mengapa variabel membungkus pada 2 ^ 31?
- Bukankah node.dsleep seharusnya menerima nilai 64-bit dengan SDK 2.1 dan yang lebih baru?
Salam,
Cesar
Jawaban
Anda sudah mendapat umpan balik tentang int vs. float. Adapun dsleep
dokumentasi tidak secara eksplisit menyatakan bahwa ia menerima nilai 64bit tetapi memang itulah yang terjadi sesuaihttps://github.com/nodemcu/nodemcu-firmware/pull/2358 (sejak April 2018).