B4R Tutorial Some code to write into and read from EEPROM on ESP8266

Discussion in 'B4R Tutorials' started by JMB, Aug 5, 2017.

  1. JMB

    JMB Active Member Licensed User


    My first tutorial.

    I've been playing with code to do what the title says and I have come up with this.

    It should be self explanatory.

    It relies on the use of B4Rserializator.

        'Variable Definitions for moving objects to and from EEPROM
        Dim be(10As Object 'used as a storage buffer for the serializator
        Dim ListOfObjectsToStore() As Object = Array("Hello""World",1234FalseTrueFalse)
    Dim ByteDataToStore() As Byte
    Dim bc As ByteConverter

    Dim ByteLengthOfDataInEEPROM() As Byte
    Dim ActualLengthOfDataInEEPROM As Int
    Dim ByteDataInEEPROM() As Byte
    Dim ObjectsInEEPROM() As Object
        'Convert the array of objects into a sequence of bytes.
        ByteDataToStore = serializator.ConvertArrayToBytes(ListOfObjectsToStore)
    Log("Writing objects into the EEPROM...")
    'Store the length of the data being written into the EEPROM as an Integer taking up two bytes at Storage Location 700 in the EEPROM
        eeprom.WriteBytes(bc.IntsToBytes(Array As Int(ByteDataToStore.Length)), 700)
    'Now write out all the bytes into the EEPROM
        eeprom.WriteBytes(ByteDataToStore, 702)
    Log("Reading data from the EEPROM...")
    'Get two bytes out of the EEPROM from location 700
        ByteLengthOfDataInEEPROM = eeprom.ReadBytes(7002)
    'Convert these two bytes into an Integer - this is the number of bytes making up the objects that are stored in the EEPROM
        ActualLengthOfDataInEEPROM =  bc.IntsFromBytes(ByteLengthOfDataInEEPROM)(0)
    'Get all that byte data out of the EEPROM
        ByteDataInEEPROM = eeprom.ReadBytes(702, ActualLengthOfDataInEEPROM)

    'Convert those bytes back into an array of objects
        ObjectsInEEPROM = serializator.ConvertBytesToArray(ByteDataInEEPROM, be)

    'Now list all the objects
        For Each o As Object In ObjectsInEEPROM
    I used location 700 and 702 as arbitrary numbers as I was using EEPROM space lower down for some other tests. You can obviously set these to whatever you want in the EEPROM space.

    The code is pretty verbose, and it could be shortened, but I thought I'd make it verbose just to explain what's happening - it will help me when I completely forget how to do all this! :)

    Peter Simpson, Erel and derez like this.