bas.rtcmem$
bas.rtcmem$
hi is it possible to assign bas.rtcmem$ to variables or sectors, i see it uses rtcmem.read32(idx [, num]) and wondered if either accessing idx directly or assigning it to a var could be possible. i use sleep and wish a couple of variables to be reset after power loss, rtcmem seems ideal for this. I understand corruption of data only happens if idx <28.
thanks
thanks
- cicciocb
- Site Admin
- Posts: 1901
- Joined: Mon Feb 03, 2020 1:15 pm
- Location: Toulouse
- Has thanked: 407 times
- Been thanked: 1272 times
- Contact:
Re: bas.rtcmem$
Hi barneyb,
you can use the functions WORD.SETPARAM and WORD.GETPARAM to set your variables into a string buffer and then set it in the rtcmem.
The following is a code taken from the old forum that shows how manage variables with these functions and how store them into a file.
In your case, you can simply replace the file save / file read with bas.rtcmem$ i.e.
replace
with
and replace
'with
you can use the functions WORD.SETPARAM and WORD.GETPARAM to set your variables into a string buffer and then set it in the rtcmem.
The following is a code taken from the old forum that shows how manage variables with these functions and how store them into a file.
In your case, you can simply replace the file save / file read with bas.rtcmem$ i.e.
replace
Code: [Local Link Removed for Guests]
file.save "/myconf.txt", a$
Code: [Local Link Removed for Guests]
bas.rtcmem$ = a$
Code: [Local Link Removed for Guests]
a$ = file.read$( "/myconf.txt")
Code: [Local Link Removed for Guests]
a$ = bas.rtcmem$
Code: [Local Link Removed for Guests]
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' how save and restore variables into a "configuration" file
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' variables to be stored
color$ = "green"
size$ = "big"
orientation$ = "left"
line$ = "first"
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SNIPPET 1
'store all the variables in the file "myconf.txt"
''''''''''''''''''''''''''''''''''''''''''''''''''''''
a$ = ""
'set the variables in a$
WORD.SETPARAM a$, "color$", color$
WORD.SETPARAM a$, "size$", size$
WORD.SETPARAM a$, "orientation$", orientation$
WORD.SETPARAM a$, "line$", line$
wlog a$ ' shows the content just for debug purposes
'save a$ in the config file
file.save "/myconf.txt", a$
'end
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SNIPPET 2
'read variable from the config file into a$
''''''''''''''''''''''''''''''''''''''''''''''''''''''
a$ = file.read$( "/myconf.txt")
wlog a$ ' shows the content just for debug purposes
'extract the variables
color$ = WORD.GETPARAM$(a$, "color$")
size$ = WORD.GETPARAM$(a$, "size$")
orientation$ = WORD.GETPARAM$(a$, "orientation$")
line$ = WORD.GETPARAM$(a$, "line$")
wlog color$, size$, orientation$, line$
'end
'''''''''''''''''''''''''''
' SNIPPET 3
'modify only one variable
'''''''''''''''''''''''''''
'read variable from the config file into a$
a$ = file.read$( "/myconf.txt")
wlog a$ ' shows the content just for debug purposes
WORD.SETPARAM a$, "color$", "blue" ' modify the content of the variable
wlog a$ ' shows the content just for debug purposes
file.save "/myconf.txt", a$
'end
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' SNIPPET 4
'another "dynamic" approach for reading variables
''''''''''''''''''''''''''''''''''''''''''''''''''''''
' clear the variables
color$ = ""
size$ = ""
orientation$ = ""
line$ = ""
a$ = file.read$( "/myconf.txt")
for z = 1 to 10 ' max 10 parameters
b$ = WORD$(a$, z, chr$(10)) 'split all the lines separated by new the line character (\n)
if b$ = "" then exit for 'if the line is empty, stops
b$ = replace$(b$, |=|, |="|) + |"| ' put the " around the argument (i.e. from lilo$=abc -> lilo$="abc" )
command b$ 'execute dynamically the line setting the variable
next z
wlog color$, size$, orientation$, line$
Re: bas.rtcmem$
i made a test using this code, works perfect to store some text data.
even if the file is not here the file is created and the variables are correctly created in the file.
i tried to use the same code in order to store a numerical data but it does not work...
i mean :
the following code works perfect, i find the value "BLUE" store in the txt file :
color$ = "BLUE"
file.save "/myconf.txt", color$
but the following code does not work, i have an error type mismatch :
duration = 1000
file.save "/myconf.txt", duration
thank you in advance for your help.
even if the file is not here the file is created and the variables are correctly created in the file.
i tried to use the same code in order to store a numerical data but it does not work...
i mean :
the following code works perfect, i find the value "BLUE" store in the txt file :
color$ = "BLUE"
file.save "/myconf.txt", color$
but the following code does not work, i have an error type mismatch :
duration = 1000
file.save "/myconf.txt", duration
thank you in advance for your help.
-
- Posts: 142
- Joined: Mon Feb 08, 2021 10:10 pm
- Location: Scotland
- Has thanked: 44 times
- Been thanked: 50 times
Re: bas.rtcmem$
HI,
Just change the numeric value to a string for storage e.g. file.save "/myconf.txt", str$(duration)
And change it back to a numeric value when you read it with duration=val(a$) [where a$ is what you retrieved with the file.read command.]
.
Just change the numeric value to a string for storage e.g. file.save "/myconf.txt", str$(duration)
And change it back to a numeric value when you read it with duration=val(a$) [where a$ is what you retrieved with the file.read command.]
.
Re: bas.rtcmem$
very loud thank you !!!!!
i manage to do exactly what i need, with those code examples and the tips you gave me to convert...
now i just need to write the code to convert hours or minutes that are stored in decimal format to xxx hours xxx minutes of running time, as they always count lamps life in hours.
just for my personal knowledge :
it is not possible to store directly a numerical value in the eeprom of the esp? like an eeprom.write command of the arduino?
i manage to do exactly what i need, with those code examples and the tips you gave me to convert...
now i just need to write the code to convert hours or minutes that are stored in decimal format to xxx hours xxx minutes of running time, as they always count lamps life in hours.
just for my personal knowledge :
it is not possible to store directly a numerical value in the eeprom of the esp? like an eeprom.write command of the arduino?
- cicciocb
- Site Admin
- Posts: 1901
- Joined: Mon Feb 03, 2020 1:15 pm
- Location: Toulouse
- Has thanked: 407 times
- Been thanked: 1272 times
- Contact:
Re: bas.rtcmem$
In the ESP8266 and the ESP32 the eeprom is simply a block of flash memory allocated for this purpose.[Local Link Removed for Guests] wrote: [Local Link Removed for Guests]Mon Jul 12, 2021 4:06 pm very loud thank you !!!!!
i manage to do exactly what i need, with those code examples and the tips you gave me to convert...
now i just need to write the code to convert hours or minutes that are stored in decimal format to xxx hours xxx minutes of running time, as they always count lamps life in hours.
just for my personal knowledge :
it is not possible to store directly a numerical value in the eeprom of the esp? like an eeprom.write command of the arduino?
So, practically speaking, writing to the eeprom or the to "disk" is the same thing.
The best approach is to write into a file as the file system allocates dynamically the new data in a different block (wear levelling) to increase the life of the flash that has a limited number of write cycles.
Re: bas.rtcmem$
thank you for the precision.
with the help of everyone on this topic, I perfectly manage to do it with file. so it will be ok.
is there any integrated function that convert minutes in decimal in hours and minutes base 60? or do i need to make the calculation ?
with the help of everyone on this topic, I perfectly manage to do it with file. so it will be ok.
is there any integrated function that convert minutes in decimal in hours and minutes base 60? or do i need to make the calculation ?