c++ - 从 EEPROM 读取并打印到串口

标签 c++ arduino

我想按照 Arduino 函数从 EEPROM 地址读取并返回一个字符串,我可以在我的串行监视器上打印该字符串。

char EEPROM_read(int addr, int length_str) {
     char letter[length_str];
     for (int i=0; i<length_str; i++) {
      letter[i] = EEPROM.read(addr);
      addr ++;      
     }
     //Serial.println(letter); This works inside the function, but I need it to work outside of the function
     return letter;
    }


  serial_number = EEPROM_read(0,11);
  Serial.println(serial_number); //This does not work
  String SN(serial_number);
  Serial.println(SN); //This does not work

最佳答案

如果要返回 RAM 中的文本,则需要 RAM 中的空间。在 Arduino 上和您的情况下,动态内存分配是一个次优的想法,因此您最好提前提供该空间:

 char* EEPROM_read(int addrE, char* buf, int length_str) 
 {
   for (int i=0; i<length_str; i++) {
     buf[i] = EEPROM.read(addrE++);
     if (buf[i] == 0) break;        
   }
   return buf; 
 }

void setup() {
  Serial.begin(9600);

  char text[20];
  Serial.println(
    EEPROM_read(0, text, sizeof(text))
  );
} 

在此示例中,变量 text 仅在 setup 中可用,您应该能够使其在示例范围之外可用。

关于c++ - 从 EEPROM 读取并打印到串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57930787/

相关文章:

arduino - Arduino中的串行溢出

C# 串行接收限制

c++ - CLion(和其他 IDE?)的 "#pragma ide diagnostic ignored"列表

C++ STL 比较类 : how to parameterize comp-class behaviour?

c++ - 仅更改一个成员函数的类模板特化

python - 使用 PySerial 从 Arduino 串行接收到 Raspberry Pi 一段时间后停止

javascript - 通过python在网络浏览器上显示arduino串口数据

c++ - QTreeView 不显示数据

c++ - 'clear'可以赋值给std::string,为什么会有 ""方法?

c++ - Arduino C++ - 尝试实例化具有非类型模板参数的类时出错