首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EEPROM.read()和EEPROM.get()的区别

EEPROM.read()和EEPROM.get()的区别
EN

Stack Overflow用户
提问于 2021-04-22 02:31:52
回答 2查看 1.1K关注 0票数 0

我在网上搜索过,看到了这个链接“https://www.best-microcontroller-projects.com/arduino-eeprom.html#:~:text=Arduino%20EEPROM%20get%20vs%20read,bytes%20starting%20from%20an%20address”。但是我仍然不明白EEPROM.read(地址)和EEPROM.get(地址)有什么不同。

我创建了这段代码,以查看EEPROM.get()是否会读取从第一个地址到最后一个地址的字节。

代码语言:javascript
复制
#include <EEPROM.h>

int address = 0;
int eeAddress = 0;
byte value;
float f = 0.00f;

void setup() {
    Serial.begin(9600);
  while (!Serial) {
         ;                    // wait for serial port to connect. Needed for native USB port only
  }
}

void loop() {
  //--------------------EEPROM.get()-----
    Serial.println("---Using EEPROM.get()----");
  EEPROM.get(eeAddress, f);
      Serial.print(".get() address: ");
  Serial.println(eeAddress);
  Serial.print(".get() value: ");
  Serial.println(f, 3);

  //-------------------EEPROM.read()------
    Serial.println("---Using EEPROM.read()----");

  value = EEPROM.read(address);
    Serial.print(".read() address: ");
  Serial.println(address);
  Serial.print(".read() value: ");
  Serial.println(value, DEC);
  
}

对于EEPROM.get(),我只得到了"-0.000“,对于EEPROM.read(),我得到了"3”。我不明白他们之间的区别。

EN

回答 2

Stack Overflow用户

发布于 2021-04-22 03:14:57

所有信息都在语言参考中:

get()

从EEPROM读取任何数据类型或对象。

read()

从EEPROM读取一个字节。

如果您需要更多信息:

read()对单个字节进行操作。它从地址中读取单个字节。

正如here所解释的那样。

票数 0
EN

Stack Overflow用户

发布于 2021-04-22 09:43:27

好的..。在我自己弄清楚这件事之后...关于我对尼诺响应的评论,问题是我事先使用了EEPROM.write()。当我使用EEPROM.get()或EEPROM.read()时,这并不重要,因为我只向EEPROM中写入了一个字节。回到尼诺所说的话或问题中使用的链接“https://www.best-microcontroller-projects.com/arduino-eeprom.html#:~:text=EEPROM%20Write%20Standard%20type%20or%20Structure&text=You%20can%20use%20this%20function,that%20use%20different%20type%20sizes). ",EEPROM.get()从一个地址(多于1个字节)开始读取多个字节,所以如果我想将259 (2个字节)存储到EEPROM中,我将不得不使用EEPROM.put(),然后是EEPROM.get()和,而不是 EEPROM.write(),然后是EEPROM.get()或EEPROM.read()。

现在……解释我对这个话题的回答。我得到“-0.000”的原因,是因为它是我之前拥有的结果。使用EEPROM.put()将使用更新语义。意思是,如果你给地址一个56的整数,并且你存储56的变量,通过使用int x; EEPROM.get(addr, x);int x = EEPROM.read(addr);是一个整数,你将会得到整数值。但是,如果变量是另一种类型,比如浮点数,您将不会得到整数56,但是使用该声明( float x ; EEPROM.get(addr, x); )存储在该地址中的值就是您将获得的值。因此,我得到“-0.000”和“3”的原因是因为之前的浮点值和整数的前值不同。对于“3”,它可以用EEPROM.write()存储为259,也可以简单地用EEPROM.write()或EEPROM.put()存储为3。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67201612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档