Arrays 在字符数组中搜索

Arrays 在字符数组中搜索,arrays,json,arduino,esp8266,arduino-esp8266,Arrays,Json,Arduino,Esp8266,Arduino Esp8266,我正在做的项目是一个BURSTCOIN自动售票机,它从 使用ESP8266我遇到的第一个问题是,我使用的是http.getstring,它太大了,无法进入字符串,它一直在重新启动设备。然后我决定使用一个缓冲区,现在我可以得到所有要打印到序列号的信息。现在我遇到的问题是,我正在寻找BTC_在我得到的所有块中突发的信息。我想知道我是否可以在每次收到}后将块拆分,而不是将块拆分128或256个字节。 这是我的密码 #include <ESP8266HTTPClient.h> #includ

我正在做的项目是一个BURSTCOIN自动售票机,它从 使用ESP8266我遇到的第一个问题是,我使用的是http.getstring,它太大了,无法进入字符串,它一直在重新启动设备。然后我决定使用一个缓冲区,现在我可以得到所有要打印到序列号的信息。现在我遇到的问题是,我正在寻找BTC_在我得到的所有块中突发的信息。我想知道我是否可以在每次收到}后将块拆分,而不是将块拆分128或256个字节。 这是我的密码

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h> 
//#include <ArduinoJson.h>
#define LCD_ROWS 2
#define LCD_COLS 16

LiquidCrystal_I2C lcd(0x3F, LCD_COLS, LCD_ROWS);
WiFiManager wifiManager;
char apname[] = "ssid";
//char appass[] = "pass";



void configModeCallback (WiFiManager *myWiFiManager) {
  lcd.home();
  lcd.clear();
  lcd.print("Now Entering");
  lcd.setCursor(0, 1);
  lcd.print("Setup Mode");
  delay(2000);
  lcd.home();
  lcd.clear();
  lcd.print("Pls Conn To AP");
  lcd.setCursor(0, 1);
  lcd.print(apname);
}


void setup() {
  Serial.begin(115200);
  Serial.println();
  lcd.begin(4,5);
  lcd.backlight();
  startup();
  thankyou();
  lcd.home();
  lcd.clear();
  lcd.print("Connecting");   
  lcd.setCursor(0, 1);
  lcd.print("To Local WiFi");
  wifiManager.setTimeout(180);
  wifiManager.setAPCallback(configModeCallback);
  wifiManager.autoConnect(apname);//no password
  //wifiManager.autoConnect(apname,appass);//with password
  lcd.clear();
  lcd.print("Connected!");
  delay(2000); 
}

void resetesp(){
    wifiManager.resetSettings();
}

void startup(){
  lcd.clear();
  lcd.home();
  lcd.print("Ticker Test");
  lcd.setCursor(0, 1);
  lcd.print("By Draknoid");
  delay(2000);
}

void thankyou(){
  lcd.clear();
  lcd.home();
  lcd.print("Thank You!");
  lcd.setCursor(0, 1);
  lcd.print("Your Name Here");
  delay(2000);
}

void loop() {

  if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status

    HTTPClient http;  //Declare an object of class HTTPClient
    http.begin("https://poloniex.com/public?command=returnTicker","83:7D:87:4B:80:8B:B9:26:33:C0:5A:DC:30:18:58:D9:69:14:D1:4F");  //Specify request destination
    int httpCode = http.GET();//Send the request

    if(httpCode == HTTP_CODE_OK){

      int len = http.getSize();// get lenght of document (is -1 when Server sends no Content-Length header)
      // create buffer for read
      char jsonBuffer[128]; // verify this
      // get tcp stream
      WiFiClient * stream = http.getStreamPtr();

      // read all data from server
      while(http.connected() && (len > 0 || len == -1)) {
        // get available data size
        size_t size = stream->available();

        if(size) {
          // read up to 128 byte
          int c = stream->readBytes(jsonBuffer, ((size > sizeof(jsonBuffer)) ? sizeof(jsonBuffer) : size));
          // write it to Serial
          Serial.println(jsonBuffer);

          if(len > 0) {
            len -= c;
          }
        }
      }
    }
  }
  delay(10000);
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
//#包括
#定义第2行
#定义LCD_COLS 16
液晶I2C lcd(0x3F,lcd列,lcd列);
WiFiManager WiFiManager;
char apname[]=“ssid”;
//char appass[]=“通过”;
void configModeCallback(WiFiManager*myWiFiManager){
lcd.home();
lcd.clear();
lcd.打印(“正在输入”);
lcd.setCursor(0,1);
lcd.打印(“设置模式”);
延迟(2000年);
lcd.home();
lcd.clear();
lcd.打印(“请连接至AP”);
lcd.setCursor(0,1);
lcd.打印(apname);
}
无效设置(){
序列号开始(115200);
Serial.println();
lcd.begin(4,5);
lcd.backlight();
启动();
谢谢;
lcd.home();
lcd.clear();
lcd.打印(“连接”);
lcd.setCursor(0,1);
lcd.打印(“到本地WiFi”);
wifiManager.setTimeout(180);
wifiManager.setAPCallback(configModeCallback);
wifiManager.autoConnect(apname);//无密码
//wifiManager.autoConnect(apname,appass);//带密码
lcd.clear();
打印(“已连接!”);
延迟(2000年);
}
void resetesp(){
wifiManager.resetSettings();
}
无效启动(){
lcd.clear();
lcd.home();
lcd.打印(“股票测试”);
lcd.setCursor(0,1);
lcd.打印(“通过Dranoid”);
延迟(2000年);
}
谢谢{
lcd.clear();
lcd.home();
lcd.print(“谢谢!”);
lcd.setCursor(0,1);
lcd.打印(“您的名字在这里”);
延迟(2000年);
}
void循环(){
如果(WiFi.status()==WL_CONNECTED){//检查WiFi连接状态
HTTPClient http;//声明HTTPClient类的对象
http.begin(“https://poloniex.com/public?command=returnTicker“,“83:7D:87:4B:80:8B:B9:26:33:C0:5A:DC:30:18:58:D9:69:14:D1:4F”);//指定请求目标
int httpCode=http.GET();//发送请求
如果(httpCode==HTTP\u代码\u确定){
int len=http.getSize();//获取文档的长度(当服务器不发送内容长度头时为-1)
//为读取创建缓冲区
char jsonBuffer[128];//验证此项
//获取tcp流
WiFiClient*stream=http.getStreamPtr();
//从服务器读取所有数据
而(http.connected()&&(len>0 | | len==-1)){
//获取可用数据大小
size\u t size=stream->available();
如果(尺寸){
//最多可读取128字节
intc=stream->readBytes(jsonBuffer,((size>sizeof(jsonBuffer))?sizeof(jsonBuffer):size));
//把它写进串口
Serial.println(jsonBuffer);
如果(len>0){
len-=c;
}
}
}
}
}
延迟(10 000);
}

您可以将这些小片段转换成字符串,并使用像
endsWith()这样有条理的本地人搜索它们。