Класс String и ошибки связанные с ним

OverKe
Offline
Зарегистрирован: 27.08.2019
void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
  
  
  int a;
  
  String strarray[251];//текстовый
  Serial.println("ййй");
  String SPO[251];//вытащил из текста
  String BIO[251];//вытащил из текста
}

 

OverKe
Offline
Зарегистрирован: 27.08.2019

Никак не могу понять что происходит, код доходит до определения переменной класса String и начинается заново с первой строчки void loop

Помогите кто знает в чем причина

OverKe
Offline
Зарегистрирован: 27.08.2019
void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
  
  
  int a;
  
  String strarray[251];//текстовый
  Serial.println("ййй");
  String SPO[251];//вытащил из текста
  String BIO[251];//вытащил из текста
  
  String sp[5];

  for (int i = 1; i <= 250; i++)
  {
    long int a;
    long int b;
    a=random(10,20);
    b=random(50,60);
    strarray[i] = a + "/" + b;
  }

  for (int i = 1; i <= 250; i++)
  {
    //sp = strarray[i].Split(new char[] { '/' });
    String sp0 = getValue(strarray[i],'/',0);
    String sp1 = getValue(strarray[i],'/',1);
    Serial.println(sp0);
    SPO[i] = sp0;
    BIO[i] = sp1;
  }

  while (true)
  {
    //Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
    a = Serial.read();
    delay(1000);
    Serial.println(a);
    delay(1000);
    Serial.print(SPO[1]);
    delay(1000);
    Serial.print(" 2131");
    delay(1000);
    Serial.println(BIO[1]);
    delay(1000);
  }


}

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length()-1;

  for(int i=0; i<=maxIndex && found<=index; i++){
    if(data.charAt(i)==separator || i==maxIndex){
        found++;
        strIndex[0] = strIndex[1]+1;
        strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }

  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}

 

OverKe
Offline
Зарегистрирован: 27.08.2019

OverKe пишет:

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
  
  
  int a;
  
  String strarray[251];//текстовый
  Serial.println("ййй");
  String SPO[251];//вытащил из текста
  String BIO[251];//вытащил из текста
  
  String sp[5];

  for (int i = 1; i <= 250; i++)
  {
    long int a;
    long int b;
    a=random(10,20);
    b=random(50,60);
    strarray[i] = a + "/" + b;
  }

  for (int i = 1; i <= 250; i++)
  {
    //sp = strarray[i].Split(new char[] { '/' });
    String sp0 = getValue(strarray[i],'/',0);
    String sp1 = getValue(strarray[i],'/',1);
    Serial.println(sp0);
    SPO[i] = sp0;
    BIO[i] = sp1;
  }

  while (true)
  {
    //Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
    a = Serial.read();
    delay(1000);
    Serial.println(a);
    delay(1000);
    Serial.print(SPO[1]);
    delay(1000);
    Serial.print(" 2131");
    delay(1000);
    Serial.println(BIO[1]);
    delay(1000);
  }


}

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length()-1;

  for(int i=0; i<=maxIndex && found<=index; i++){
    if(data.charAt(i)==separator || i==maxIndex){
        found++;
        strIndex[0] = strIndex[1]+1;
        strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }

  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}

 

Вот полный код

OverKe
Offline
Зарегистрирован: 27.08.2019

Тема закрыта, переменные надо объявлять до void loop

OverKe
Offline
Зарегистрирован: 27.08.2019

Я ошибся, что-то явно не так вот новый код

String strarray[91];//текстовый
String SPO[91];//вытащил из текста
String BIO[91];//вытащил из текста
String sp[5];
int a;
int b;
int c;
String sp0;
String sp1;
void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
  for (int i = 1; i <= 150; i++)
  {
    a = random(10, 20);
    b = random(50, 60);
    strarray[i] = a + "/" + b;
  }
Serial.println("ййй");
  for (int i = 1; i <= 250; i++)
  {
    //sp = strarray[i].Split(new char[] { '/' });
    sp0 = getValue(strarray[i], '/', 0);
    sp1 = getValue(strarray[i], '/', 1);
    Serial.println(sp0);
    SPO[i] = sp0;
    BIO[i] = sp1;
  }
Serial.println("www");
  while (true)
  {
    //Serial.print("\320\237\321\200\320\270\320\262\320\265\321\202");
    c = Serial.read();
    delay(1000);
    Serial.print(SPO[c]);
    delay(1000);
    Serial.print(" 2131");
    delay(1000);
    Serial.println(BIO[1]);
    delay(1000);
  }
}

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length() - 1;

  for (int i = 0; i <= maxIndex && found <= index; i++) {
    if (data.charAt(i) == separator || i == maxIndex) {
      found++;
      strIndex[0] = strIndex[1] + 1;
      strIndex[1] = (i == maxIndex) ? i + 1 : i;
    }
  }

  return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}

 

OverKe
Offline
Зарегистрирован: 27.08.2019

бесконечно привет выводит

 

b707
Offline
Зарегистрирован: 26.05.2017

ну а как вы хотели то?

Сколько у вас элементов под массив отведено и сколько итераций в цикле делаете, сравните

OverKe
Offline
Зарегистрирован: 27.08.2019

И опять мои глупые ошибки с выходом за массив, но появилась новая задачи, преобразовать переменную int к типу String

int a;
String str;
void setup() {
  Serial.begin(4800);
}
void loop() {
str = a.ToString;
Serial.println(str);
}

 

OverKe
Offline
Зарегистрирован: 27.08.2019

Появляются ошибки типа

qqq:20:21: error: request for member 'ToString' in 'a', which is of non-class type 'int'
 
     strarray[i] = a.ToString + "/" + b;
b707
Offline
Зарегистрирован: 26.05.2017

OverKe - чтобы не было столько "глупых ошибок", советую для начала прочитать какой-нибудь учебник по языку. А то ведь правда, ошибки очень глупые - и пока вы не прочитаете, они у вас будут возникать на каждой строчке.

 

OverKe
Offline
Зарегистрирован: 27.08.2019

Просто устал, постоянно на разных ЯП пишу, вот и туплю

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

OverKe пишет:

Просто устал, постоянно на разных ЯП пишу, вот и туплю

Проблема 20-ти языков? Знакомо :(