MIT App Inventor & Arduino & ESP8266:在 Google Firebase 中存储值
MIT App Inventor & Arduino & ESP8266 : Store Values in Google Firebase
我正在尝试在 MIT App Inventor 2 中构建一个 Android 应用程序。
这是我的design
这是我的code blocks
我的目的是;当我点击色轮上的某处时;获取我点击的位置(黑球)的坐标并获取其 RGB 值。
它在 phone 屏幕上完美运行,它显示了值。但问题是;当我尝试将 rgb 值导入 Firebase 时,这些值就像 picture
中的这种格式
如您所见,他们方框中的文本格式如下:"\"101\""
但我只想要:101
。因为我将获取我的 NodeMCU ESP8266 的值以闪烁 RGB LED。我会将这些值插入到 analogWrite(pin,value)
函数中。
我在 MIT App Inventor 块屏幕中的错误在哪里?里面有解决办法吗?或者你能给我一些关于 ESP8266 代码部分的建议吗(比如拆分文本之类的)?
您可以添加此行
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;
}
我正在尝试在 MIT App Inventor 2 中构建一个 Android 应用程序。
这是我的design
这是我的code blocks
我的目的是;当我点击色轮上的某处时;获取我点击的位置(黑球)的坐标并获取其 RGB 值。
它在 phone 屏幕上完美运行,它显示了值。但问题是;当我尝试将 rgb 值导入 Firebase 时,这些值就像 picture
中的这种格式如您所见,他们方框中的文本格式如下:"\"101\""
但我只想要:101
。因为我将获取我的 NodeMCU ESP8266 的值以闪烁 RGB LED。我会将这些值插入到 analogWrite(pin,value)
函数中。
我在 MIT App Inventor 块屏幕中的错误在哪里?里面有解决办法吗?或者你能给我一些关于 ESP8266 代码部分的建议吗(比如拆分文本之类的)?
您可以添加此行
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;
}