将 Lora.read() 转储到数组

Dump Lora.read() to array

我想使用 Arduino Nano 从 Lora 发射器转储字符。通过这一行,我假设它可以将字符存储到一个数组中:

char* dump = (char)LoRa.read();
char in[255];
strcpy(in, dump);
char str[] = in;

但不幸的是我得到了这个编译器错误:

exit status 1
initializer fails to determine size of 'str'

我该如何解决?

更新

我给出我的全部代码。我为我的 objective 使用 shox96 shox96 from siara-cc 来压缩来自 Lora.read().

的数据
void print_compressed(char *in, int len) {
  int l;
  byte bit;
  //Serial.write("\nCompressed bits:");
  for (l=0; l<len*8; l++) {
    bit = (in[l/8]>>(7-l%8))&0x01;
    //Serial.print((int)bit);
    //if (l%8 == 7) Serial.print(" ");
  }
}

void loop() {
  char* dump = (char)LoRa.read();
  char in[255];
  strcpy(in, dump);
  char str[] = in;
  char cbuf[300];
  char dbuf[300];

  int len = sizeof(str);

  if (len > 0) {
    memset(cbuf, 0, sizeof(cbuf));
    int ctot = shox96_0_2_compress(str, len, cbuf, NULL);
    print_compressed(cbuf, ctot);
    memset(dbuf, 0, sizeof(dbuf));
    int dlen = shox96_0_2_decompress(cbuf, ctot, dbuf, NULL);
    dbuf[dlen] = 0;

    float perc = (dlen-ctot);
    perc /= dlen;
    perc *= 100;

    Serial.print(ctot);
    Serial.write(",");
    Serial.println(dlen);
  }
  delay(1000);
}

编译器只能在创建时为您提供数组的大小,前提是它有一个大括号括起来的初始化列表。像这样:

int array[] = {1, 2, 3, 4, 5};

如果您要执行除此以外的任何操作,则需要在这些大括号内输入一个数字。由于您正在制作数组的副本,并且该数组是 255 个字符,那么这个数组也需要是 255 个字符才能容纳。

char str[255] = in;

我对你的问题的评论仍然有效。这个答案清除了你的编译器错误,但我不认为它真的是解决你更大问题的方法。但是,如果没有看到更多您的代码并且对它了解得更多,我就不能说太多。到达该行时,您已经拥有此数据的两个副本。我不确定你为什么认为你需要第三个。