Класс String и ошибки связанные с ним
- Войдите на сайт для отправки комментариев
Втр, 27/08/2019 - 20:59
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 и начинается заново с первой строчки void loop
Помогите кто знает в чем причина
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]) : ""; }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]) : ""; }Вот полный код
Тема закрыта, переменные надо объявлять до void loop
Я ошибся, что-то явно не так вот новый код
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]) : ""; }бесконечно привет выводит
ну а как вы хотели то?
Сколько у вас элементов под массив отведено и сколько итераций в цикле делаете, сравните
И опять мои глупые ошибки с выходом за массив, но появилась новая задачи, преобразовать переменную int к типу String
int a; String str; void setup() { Serial.begin(4800); } void loop() { str = a.ToString; Serial.println(str); }Появляются ошибки типа
OverKe - чтобы не было столько "глупых ошибок", советую для начала прочитать какой-нибудь учебник по языку. А то ведь правда, ошибки очень глупые - и пока вы не прочитаете, они у вас будут возникать на каждой строчке.
Просто устал, постоянно на разных ЯП пишу, вот и туплю
Просто устал, постоянно на разных ЯП пишу, вот и туплю
Проблема 20-ти языков? Знакомо :(