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