MIT App Inventor, Arduino и ESP8266: сохраняем значения в Google Firebase - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать приложение для Android в MIT App Inventor 2.

Это мой дизайн

Это мои кодовые блоки

Моя цель; когда я нажимаю где-нибудь на цветовое колесо; получить координаты места, которое я щелкнул (черный шар) и получить его значения RGB.

Отлично работает на экране телефона, показывает значения. Но проблема в том, когда я пытаюсь импортировать значения rgb в Firebase, значения как в этом формате на этом рисунке

Как видите, текстовые форматы в их полях выглядят так: "\"101\""

Но я хочу: 101 только. Потому что я получу значения для моего NodeMCU ESP8266 для мигания индикатора RGB. Я вставлю эти значения в функцию analogWrite(pin,value).

Где моя ошибка на экране MIT App Inventor Block? Есть ли какое-нибудь решение там? Или вы можете дать мне предложение об этом для части кода ESP8266 (например, разделить текст или что-то)?

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете добавить эту строку

String b_fir = Firebase.getString("B");
String str_b_fir = getStringPartByNr(b_fir, '"', 1);
int int_b_fir = str_b_fir.toInt();

Вы можете добавить эту функцию под loop

String getStringPartByNr(String data, char separator, int index)
{
    // spliting a string and return the part nr index
    // split by separator

    int stringData = 0;        //variable to count data part nr 
    String dataPart = "";      //variable to hole the return text

    for(int i = 0; i<data.length()-1; i++) {    //Walk through the text one letter at a time

      if(data[i]==separator) {
        //Count the number of times separator character appears in the text
        stringData++;

      }else if(stringData==index) {
        //get the text when separator is the rignt one
        dataPart.concat(data[i]);

      }else if(stringData>index) {
        //return text and stop if the next separator appears - to save CPU-time
        return dataPart;
        break;

      }

    }
    //return text if this is the last part
    return dataPart;
}
...