first commit
This commit is contained in:
759
src/main.cpp
Normal file
759
src/main.cpp
Normal file
@ -0,0 +1,759 @@
|
||||
#include"Define.h"
|
||||
#include <GSMMannager.h>
|
||||
#include <HTTPClient.h>
|
||||
#include <ArduinoHttpClient.h>
|
||||
#include<driver/periph_ctrl.h>
|
||||
#include "SensorOptoSky.h"
|
||||
#include <SoftwareSerial.h>
|
||||
#include <Ticker.h>
|
||||
#include <updatebyme.h>
|
||||
//#include "MyWebServer.h"
|
||||
#include "SDmanger.h"
|
||||
//#include "HttpsOTAUpdate.h"
|
||||
#include "slave.h"
|
||||
#include "log.h"
|
||||
|
||||
#include <wifidebug.h>
|
||||
|
||||
#define LOGGING
|
||||
//myPort将原来ESP8266对内通讯改为,485对内的通讯
|
||||
// #define MYPORT_TX 45
|
||||
// #define MYPORT_RX 46
|
||||
int hassend = 0;
|
||||
GSMMannger *gsmmanger;
|
||||
UpDateClassByme *ProgrameUper;
|
||||
HttpClient *http;
|
||||
bool ishttpbusy = false;
|
||||
SensorOptoSky IS1Sensor;
|
||||
// SoftwareSerial myPort(MYPORT_RX, MYPORT_TX, false);
|
||||
// HardwareSerial myPort(1);
|
||||
// swSer(14, 12, false, 256);
|
||||
// u_char a[]={0x01,0x04,0x00,0x00,0x00,0x06,0x70,0x08};
|
||||
u_char ret[17];
|
||||
u_char windret[17];
|
||||
Ticker ticker;
|
||||
slave myslave;
|
||||
|
||||
String getnetData()
|
||||
{
|
||||
int err = http->get("/weather/php/Date.php");
|
||||
if (err != 0)
|
||||
{
|
||||
SerialMon.println(F("Date failed to connect"));
|
||||
delay(10000);
|
||||
return "";
|
||||
}
|
||||
int status = http->responseStatusCode();
|
||||
if (!status)
|
||||
{
|
||||
delay(10000);
|
||||
return "";
|
||||
}
|
||||
|
||||
// SerialMon.println(F("Response Headers:"));
|
||||
while (http->headerAvailable())
|
||||
{
|
||||
String headerName = http->readHeaderName();
|
||||
String headerValue = http->readHeaderValue();
|
||||
// SerialMon.println("Date: " + headerName + " : " + headerValue);
|
||||
}
|
||||
if (http->isResponseChunked())
|
||||
{
|
||||
// SerialMon.println(F("Date The response is chunked"));
|
||||
}
|
||||
|
||||
String body = http->responseBody();
|
||||
http->stop();
|
||||
return body;
|
||||
}
|
||||
bool UpdateData(String path, char *str, size_t lenth, String Contenttype = "")
|
||||
{
|
||||
|
||||
http->beginRequest();
|
||||
http->post(path);
|
||||
if (Contenttype != "")
|
||||
{
|
||||
http->sendHeader(HTTP_HEADER_CONTENT_TYPE, Contenttype);
|
||||
|
||||
/* code */
|
||||
}
|
||||
|
||||
http->sendHeader(HTTP_HEADER_CONTENT_LENGTH, lenth);
|
||||
http->endRequest();
|
||||
int err = http->write((const byte *)str, lenth);
|
||||
delay(1000);
|
||||
Serial.print("send date size");
|
||||
Serial.println(err);
|
||||
|
||||
/*
|
||||
for (size_t i = 0; i < lenth; i++)
|
||||
{
|
||||
Serial.print("0x");
|
||||
Serial.print(str[i],HEX);
|
||||
Serial.print(" ");
|
||||
if (i%20==0)
|
||||
{
|
||||
Serial.println(" ");
|
||||
|
||||
}
|
||||
}
|
||||
*/
|
||||
// http->write((const byte*)IS1Sensor.UpData, IS1Sensor.SensorInfo.BandNum*2);
|
||||
// http->stop();
|
||||
Serial.println("hear1");
|
||||
if (err == 0)
|
||||
{
|
||||
|
||||
http->stop();
|
||||
return false;
|
||||
}
|
||||
int status = http->responseStatusCode();
|
||||
Serial.println("hear3");
|
||||
if (!status)
|
||||
{
|
||||
http->stop();
|
||||
return false;
|
||||
}
|
||||
|
||||
int length = http->contentLength();
|
||||
Serial.println("hear4");
|
||||
if (length == 0)
|
||||
{
|
||||
http->stop();
|
||||
return false;
|
||||
}
|
||||
|
||||
String body = http->responseBody();
|
||||
Serial.println("body:"+body);
|
||||
if (body != "ok")
|
||||
{
|
||||
http->stop();
|
||||
return false;
|
||||
}
|
||||
|
||||
http->stop();
|
||||
return true;
|
||||
}
|
||||
void ReuploadData(String path, String webpath, String content = "")
|
||||
{
|
||||
vTaskDelay(1);
|
||||
Vector<String> files;
|
||||
String vec[20]; //每次处理20个
|
||||
files.setStorage(vec);
|
||||
while (!sdcard::ListDir(path.c_str(), files))
|
||||
{
|
||||
if (files.size() != 0)
|
||||
{
|
||||
Serial.println("find " + String(files.size()) + "file");
|
||||
for (size_t i = 0; i < files.size(); i++)
|
||||
{
|
||||
File nowfile = SD_MMC.open(files.at(i).c_str(), "rb");
|
||||
size_t size = nowfile.size();
|
||||
char *arr = new char[size];
|
||||
nowfile.readBytes(arr, size);
|
||||
bool flagsucc = UpdateData(webpath, arr, size, content);
|
||||
if (!flagsucc)
|
||||
{
|
||||
return;
|
||||
/* code */
|
||||
}
|
||||
delete[] arr;
|
||||
sdcard::deleteFolderOrFile(files.at(i).c_str());
|
||||
vTaskDelay(1);
|
||||
/* code */
|
||||
}
|
||||
}
|
||||
vTaskDelay(1);
|
||||
}
|
||||
if (files.size() != 0)
|
||||
{
|
||||
Serial.println("find " + String(files.size()) + "file not enough 20");
|
||||
for (size_t i = 0; i < files.size(); i++)
|
||||
{
|
||||
vTaskDelay(1);
|
||||
File nowfile = SD_MMC.open(files.at(i).c_str(), "rb");
|
||||
size_t size = nowfile.size();
|
||||
char *arr = new char[size];
|
||||
nowfile.readBytes(arr, size);
|
||||
Serial.println("run here now");
|
||||
bool flagsucc = UpdateData(webpath, arr, size, content);
|
||||
if (!flagsucc)
|
||||
{
|
||||
return;
|
||||
/* code */
|
||||
}
|
||||
|
||||
delete[] arr;
|
||||
sdcard::deleteFolderOrFile(files.at(i).c_str());
|
||||
/* code */
|
||||
}
|
||||
}
|
||||
vTaskDelay(1);
|
||||
}
|
||||
String fenge(String str, String fen, int index)
|
||||
{
|
||||
int weizhi;
|
||||
String temps[str.length()];
|
||||
int i = 0;
|
||||
do
|
||||
{
|
||||
weizhi = str.indexOf(fen);
|
||||
if (weizhi != -1)
|
||||
{
|
||||
temps[i] = str.substring(0, weizhi);
|
||||
str = str.substring(weizhi + fen.length(), str.length());
|
||||
i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (str.length() > 0)
|
||||
temps[i] = str;
|
||||
}
|
||||
} while (weizhi >= 0);
|
||||
|
||||
if (index > i)
|
||||
return "-1";
|
||||
return temps[index];
|
||||
}
|
||||
void Reuploaddata(void *) //重新上传数据
|
||||
{
|
||||
ReuploadData("/down", "/weather/php/SpectralDataUp.php");
|
||||
ReuploadData("/up", "/weather/php/SpectralDataUp.php");
|
||||
ReuploadData("/other", "/weather/php/WindsensorUp.php", "application/json");
|
||||
}
|
||||
void Reuploaddata() //重新上传数据
|
||||
{
|
||||
ReuploadData("/down", "/weather/php/SpectralDataUp.php");
|
||||
ReuploadData("/up", "/weather/php/SpectralDataUp.php");
|
||||
ReuploadData("/other", "/weather/php/WindsensorUp.php", "application/json");
|
||||
|
||||
}
|
||||
|
||||
String Datenow="";
|
||||
void printbytcp(String str)
|
||||
{
|
||||
//tcpserver.SendDataToClinet(str);
|
||||
Serial.println(str);
|
||||
str=Datenow+"#######"+str;
|
||||
int lennn=str.length();
|
||||
char *temp = new char[lennn];
|
||||
memcpy(temp, str.c_str(), str.length());
|
||||
bool flagsucc = UpdateData("/weather/php/log.php", temp, lennn);
|
||||
vTaskDelay(3000);
|
||||
delete[] temp;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void esp8266_readmeichaung()
|
||||
{
|
||||
//读取美创模块
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// delay(1000); //等待1s 防止下位机反应不过来
|
||||
// myPort.println("MLX#");
|
||||
// delay(10);
|
||||
// for (int j = 0; j < 8; ++j)
|
||||
// {
|
||||
// ret[j] = myPort.read();
|
||||
// }
|
||||
// double temprature;
|
||||
// memcpy(&temprature, ret, 8);
|
||||
// Serial.println("wendu");
|
||||
// Serial.println(temprature);
|
||||
// Serial.println("hello word");
|
||||
|
||||
///////////////now///////////////////////////
|
||||
double temprature = myslave.getMLX();
|
||||
Serial.println("wendu");
|
||||
Serial.println(temprature);
|
||||
Serial.println("hello word");
|
||||
|
||||
|
||||
|
||||
/////////////////////////////初始化windsensor并测评1<E8AF84>71ᅣ1<EFBF84>77/////////////////////////////////////////////////////////////
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// sleep(1);
|
||||
// myPort.println("WindSensor#");
|
||||
// delay(210);
|
||||
// for (int j = 0; j < 17; ++j)
|
||||
// {
|
||||
// windret[j] = myPort.read();
|
||||
// }
|
||||
// float VV = (windret[3] * 256 + windret[4]) * 1.0 / 100;
|
||||
// float DD = (windret[5] * 256 + windret[6]) * 1.0 / 10;
|
||||
// float TT = (windret[7] * 256 + windret[8]) * 1.0 / 100;
|
||||
// float HH = (windret[9] * 256 + windret[10]) * 1.0 / 100;
|
||||
// long PP = (windret[13] * 256 + windret[14]) * 256 * 256 + (windret[11] * 256 + windret[12]);
|
||||
// Serial.println("VV:" + String(VV) + "DD:" + String(DD) + "TT:" + String(TT) + "HH:" + String(HH) + "PP:" + String(PP));
|
||||
|
||||
|
||||
////////////////////////////////now////////////////////////////
|
||||
myslave.getWehter();
|
||||
memcpy(windret,myslave.ret,17);
|
||||
float VV = (windret[3] * 256 + windret[4]) * 1.0 / 100;
|
||||
float DD = (windret[5] * 256 + windret[6]) * 1.0 / 10;
|
||||
float TT = (windret[7] * 256 + windret[8]) * 1.0 / 100;
|
||||
float HH = (windret[9] * 256 + windret[10]) * 1.0 / 100;
|
||||
long PP = (windret[13] * 256 + windret[14]) * 256 * 256 + (windret[11] * 256 + windret[12]);
|
||||
Serial.println("VV:" + String(VV) + "DD:" + String(DD) + "TT:" + String(TT) + "HH:" + String(HH) + "PP:" + String(PP));
|
||||
}
|
||||
|
||||
|
||||
String get_GPS(void)
|
||||
{
|
||||
Serial.println("check GPS...");
|
||||
gsmmanger->modem->sendAT(GF("+CGNSPWR?"));
|
||||
gsmmanger->modem->waitResponse("OK");
|
||||
|
||||
Serial.println("Open GPS...");
|
||||
gsmmanger->modem->sendAT(GF("+CGNSPWR=1"));
|
||||
gsmmanger->modem->waitResponse("OK");
|
||||
|
||||
gsmmanger->modem->sendAT(GF("+CGNSAID=31,1,1,1"));
|
||||
gsmmanger->modem->waitResponse("OK");
|
||||
|
||||
Serial.println("get GNSS...");
|
||||
gsmmanger->modem->sendAT(GF("+CGNSINF"));
|
||||
|
||||
String gps;
|
||||
gsmmanger->modem->waitResponse(5000,gps);
|
||||
// Serial.println(gps);
|
||||
|
||||
return gps;
|
||||
}
|
||||
|
||||
|
||||
String log_path;
|
||||
String log_data;
|
||||
void setup()
|
||||
{
|
||||
Serial2.begin(115200);
|
||||
|
||||
Serial.begin(115200);
|
||||
sdcard::init_sdcard();
|
||||
sdcard::testwriet();
|
||||
sdcard::Mkdir("/up");
|
||||
sdcard::Mkdir("/down");
|
||||
sdcard::Mkdir("/other");
|
||||
sdcard::Mkdir("/gps");
|
||||
sdcard::Mkdir("/log");
|
||||
beginWIFI();
|
||||
// sdcard::mylistDir("/",2);
|
||||
{
|
||||
}
|
||||
// pinMode(21, OUTPUT);
|
||||
// digitalWrite(21, HIGH);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// return;
|
||||
//重启esp8266现在不用
|
||||
// pinMode(5, OUTPUT);
|
||||
// digitalWrite(5, LOW);
|
||||
// delay(500);
|
||||
// digitalWrite(5, HIGH);
|
||||
|
||||
|
||||
// pinMode(22,OUTPUT);
|
||||
// digitalWrite(22,HIGH);
|
||||
// pinMode(23,OUTPUT);
|
||||
// digitalWrite(23,HIGH);
|
||||
|
||||
|
||||
//将原来通过esp8266读取美创写成函数esp8266_readmeichaung(),方便调试。
|
||||
|
||||
// myPort.begin(38400, SWSERIAL_8N1, MYPORT_RX, MYPORT_TX, false);
|
||||
myslave.init(46,45);
|
||||
sleep(3);
|
||||
// esp8266_readmeichaung();
|
||||
//原来的SIM800,改为现在的AIR780E4G模块,使用的是串口2。
|
||||
gsmmanger = new GSMMannger(2, 19, 20);
|
||||
|
||||
http = new HttpClient(*gsmmanger->client, "82.156.1.111");
|
||||
|
||||
String Date = getnetData();
|
||||
Serial.println("date is :"+Date);
|
||||
String tem = fenge(Date," ",0);
|
||||
log_path = "/log/"+tem+".txt";
|
||||
log_data = Date+"\r\nSystem starts working.";
|
||||
write_log(log_path,10,"");
|
||||
write_log(log_path,10,log_data);
|
||||
write_log(log_path,10,"AIR780E Init Success.");
|
||||
vTaskDelay(1000);
|
||||
|
||||
|
||||
gsmmanger->modem->sendAT(GF("+CGPIO=1,11,1")); //点灯
|
||||
gsmmanger->modem->waitResponse("OK");
|
||||
String gpsbac = get_GPS();
|
||||
Serial.println(gpsbac);
|
||||
write_log(log_path,10,"GPS Init Success.");
|
||||
vTaskDelay(1000);
|
||||
//////////////////////////////初始化http模块//////////////////////////////////////////////
|
||||
// http = new HttpClient(*gsmmanger->client, "82.156.1.111");
|
||||
ProgrameUper = new UpDateClassByme(http);
|
||||
|
||||
IS1Sensor.initSensor();
|
||||
String StationID = IS1Sensor.SensorInfo.serialnumber;
|
||||
String SensorID = IS1Sensor.SensorInfo.SensorName;
|
||||
|
||||
|
||||
ProgrameUper->initme(Curentvsion);
|
||||
ProgrameUper->StationID=StationID;
|
||||
ProgrameUper->CheckAndUpdate();
|
||||
write_log(log_path,10,"Http Init Success.");
|
||||
// ProgrameUper->DownloadFirmwareForurl("");
|
||||
////////////////////////////上传IS1设备信息//////////////////////////////////////////////
|
||||
|
||||
//////////////////////////////初始化IS1///////////////////////////////////////////////////
|
||||
|
||||
// String Date=getnetData();
|
||||
String Upheader = StationID + "##" + SensorID + "##" + String(IS1Sensor.SensorInfo.BandNum) + "##"
|
||||
+ String(IS1Sensor.SensorInfo.a1,9) + ":" + String(IS1Sensor.SensorInfo.a2,9) + ":" + String(IS1Sensor.SensorInfo.a3,9) + ":" + String(IS1Sensor.SensorInfo.a4,9)+"##"+ProgrameUper->CurrentVersion;
|
||||
http->beginRequest();
|
||||
http->post("/weather/php/SensorInfoUp.php");
|
||||
http->sendHeader(HTTP_HEADER_CONTENT_LENGTH, Upheader.length());
|
||||
http->endRequest();
|
||||
http->write((const byte *)Upheader.c_str(), Upheader.length());
|
||||
http->stop();
|
||||
ticker.attach(60 * 60, Reuploaddata);
|
||||
write_log(log_path,10,"IS1 Init Success.");
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
log_data = "System Init Success";
|
||||
write_log(log_path,10,log_data);
|
||||
// Serial.println(gsmmanger->GetDataAndTime());
|
||||
}
|
||||
String lastdate="";
|
||||
void loop()
|
||||
{
|
||||
String Date = getnetData();
|
||||
String tem = fenge(Date," ",0);
|
||||
log_path = "/log/"+tem+".txt";
|
||||
// //擦除myport缓存
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// myPort.println("YULIANG#");
|
||||
// delay(510); //等待500ms
|
||||
// String yuliang=myPort.readStringUntil('#');
|
||||
// delay(1010);
|
||||
// Serial.println("yuliang "+yuliang);
|
||||
|
||||
/////////////////NOW/////////////////////
|
||||
write_log(log_path,10,"");
|
||||
write_log(log_path,10,Date);
|
||||
|
||||
String yuliang = String(myslave.getYuliang());
|
||||
delay(1010);
|
||||
Serial.println("yuliang "+yuliang);
|
||||
write_log(log_path,10,"getYuliang :"+yuliang);
|
||||
|
||||
// //擦除myport缓存
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// myPort.println("YLFZ#");
|
||||
// delay(510); //等待500ms
|
||||
// String yuliangfz=myPort.readStringUntil('#');
|
||||
// delay(1010);
|
||||
// Serial.println("fuzhao "+yuliangfz);
|
||||
|
||||
/////////////////NOW/////////////////////
|
||||
String yuliangfz = String(myslave.getYuliang());
|
||||
delay(1010);
|
||||
Serial.println("fuzhao " + yuliangfz);
|
||||
log_data ="fuzhao :"+yuliangfz;
|
||||
write_log(log_path,10,log_data);
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// myPort.println("WindSensor#"); //发送指令给无参数
|
||||
// delay(510); //等待500ms
|
||||
// for (int j = 0; j < 17; ++j)
|
||||
// {
|
||||
// windret[j] = myPort.read(); //读取返回倄1<E58084>71ᅣ1<EFBF84>77
|
||||
// // Serial.println(ret[j],HEX);
|
||||
// }
|
||||
// float VV = (windret[3] * 256 + windret[4]) * 1.0 / 100;
|
||||
// float DD = (windret[5] * 256 + windret[6]) * 1.0 / 10;
|
||||
// float TT = (windret[7] * 256 + windret[8]) * 1.0 / 100;
|
||||
// float HH = (windret[9] * 256 + windret[10]) * 1.0 / 100;
|
||||
// long PP = (windret[13] * 256 + windret[14]) * 256 * 256 + (windret[11] * 256 + windret[12]);
|
||||
// Serial.println("VV:" + String(VV) + "DD:" + String(DD) + "TT:" + String(TT) + "HH:" + String(HH) + "PP:" + String(PP));
|
||||
// //////////////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////NOW///////////////////////////
|
||||
myslave.getWehter();
|
||||
memcpy(windret,myslave.ret,17);
|
||||
float VV = (windret[3] * 256 + windret[4]) * 1.0 / 100;
|
||||
float DD = (windret[5] * 256 + windret[6]) * 1.0 / 10;
|
||||
float TT = (windret[7] * 256 + windret[8]) * 1.0 / 100;
|
||||
float HH = (windret[9] * 256 + windret[10]) * 1.0 / 100;
|
||||
long PP = (windret[13] * 256 + windret[14]) * 256 * 256 + (windret[11] * 256 + windret[12]);
|
||||
Serial.println("VV:" + String(VV) + "DD:" + String(DD) + "TT:" + String(TT) + "HH:" + String(HH) + "PP:" + String(PP));
|
||||
write_log(log_path,10,"VV:" + String(VV) + "DD:" + String(DD) + "TT:" + String(TT) + "HH:" + String(HH) + "PP:" + String(PP));
|
||||
|
||||
// //读取美创模块
|
||||
// delay(1010);
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// delay(1000); //等待1s 防止下位机反应不过来
|
||||
// myPort.println("MLX#");
|
||||
// delay(10);
|
||||
// for (int j = 0; j < 8; ++j)
|
||||
// {
|
||||
// ret[j] = myPort.read();
|
||||
// }
|
||||
// double temprature;
|
||||
// memcpy(&temprature, ret, 8);
|
||||
// Serial.println("wendu");
|
||||
// Serial.println(temprature);
|
||||
// delay(1000);
|
||||
|
||||
////////////////////////////NOW///////////////////////////
|
||||
String temprature =String(myslave.getMLX());
|
||||
Serial.println("wendu");
|
||||
Serial.println(temprature);
|
||||
log_data ="wendu :"+temprature;
|
||||
write_log(log_path,10,log_data);
|
||||
|
||||
////sim 循环
|
||||
|
||||
write_log(log_path,10,"start gsmmanger->loop()");
|
||||
gsmmanger->loop();
|
||||
#ifdef DINBIAO
|
||||
String Datenow1=getnetData();
|
||||
Datenow =fenge(Datenow1, " ", 0) + "_" + fenge(fenge(Datenow1, " ", 1), ":", 0) + "_" + fenge(fenge(Datenow1, " ", 1), ":", 1) + "_" + fenge(fenge(Datenow1, " ", 1), ":", 2);
|
||||
IS1Sensor.PrintFunc=printbytcp;
|
||||
#endif
|
||||
write_log(log_path,10,"start TakeOneJob()");
|
||||
IS1Sensor.TakeOneJob(); ////IS1采集一次
|
||||
String StationID = IS1Sensor.SensorInfo.serialnumber;
|
||||
String SensorID = IS1Sensor.SensorInfo.SensorName;
|
||||
|
||||
///////////////获取时间
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// myPort.println("GETGPS#");
|
||||
// String gpsbac = myPort.readStringUntil('\n');
|
||||
// Serial.println(gpsbac);
|
||||
|
||||
// String statnumberstr = fenge(gpsbac, "#", 1);
|
||||
// String statnumber = fenge(statnumberstr, "_", 1);
|
||||
// Serial.println(statnumber);
|
||||
// String Date;
|
||||
// if (statnumber.toInt() < 3)
|
||||
// {
|
||||
// Date = getnetData();
|
||||
// }
|
||||
|
||||
write_log(log_path,10,"start get_GPS()");
|
||||
String gpsbac = get_GPS();
|
||||
|
||||
Serial.println(gpsbac);
|
||||
// if (index < 28)
|
||||
// {
|
||||
write_log(log_path,10,"start getnetData()");
|
||||
Date = getnetData();
|
||||
// }
|
||||
|
||||
|
||||
// String Date;
|
||||
// Date = getnetData();
|
||||
|
||||
// str.substring(0, weizhi);
|
||||
// else
|
||||
// {
|
||||
// String datastr = fenge(gpsbac, "#", 0);
|
||||
// Date = fenge(datastr, "_", 1);
|
||||
// if (hassend == 0)
|
||||
// {
|
||||
// gpsbac = StationID+"#"+gpsbac;
|
||||
// int lennn = gpsbac.length();
|
||||
// char *temp = new char[lennn];
|
||||
// memcpy(temp, gpsbac.c_str(), gpsbac.length());
|
||||
// String nameoffile = "/gps/" + fenge(Date, " ", 0) + "_" + fenge(fenge(Date, " ", 1), ":", 0) + "_" + fenge(fenge(Date, " ", 1), ":", 1) + "_" + fenge(fenge(Date, " ", 1), ":", 2) + ".gps";
|
||||
// bool flagsucc = UpdateData("/weather/php/StationGPSinfo.php", temp, lennn);
|
||||
|
||||
// if (!flagsucc)
|
||||
// {
|
||||
// // sdcard::WriteStringToFile(nameoffile, temp, lennn);
|
||||
// }
|
||||
// else{
|
||||
// Serial.println("Finish Put StationGPSinfo Data");
|
||||
// }
|
||||
// delete[] temp;
|
||||
|
||||
// }
|
||||
// if (hassend >= 0)
|
||||
// {
|
||||
// hassend--;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// delay(15000);
|
||||
// if (fenge(Date, " ", 0)!=lastdate)
|
||||
// {
|
||||
// lastdate=fenge(Date, " ", 0);
|
||||
// while (myPort.read() != -1)
|
||||
// ;
|
||||
// myPort.println("ClearYL#");
|
||||
// ProgrameUper->CheckAndUpdate();
|
||||
|
||||
// /* code */
|
||||
// }
|
||||
// String Date;
|
||||
// double temprature;
|
||||
// String yuliang;
|
||||
// String yuliangfz;
|
||||
|
||||
|
||||
/////////*获取相关信息*//////////////////////////
|
||||
String datestring=fenge(Date, " ", 0) + "_" + fenge(fenge(Date, " ", 1), ":", 0) + "_" + fenge(fenge(Date, " ", 1), ":", 1) + "_" + fenge(fenge(Date, " ", 1), ":", 2);
|
||||
String Upheader = Date + "##" + StationID + "##" + SensorID + "##" + "UP" + "##"+String(IS1Sensor.shutterup)+"##";
|
||||
String Upname = "/up/" +datestring+ "_" + StationID + "_" + SensorID + "_" + "UP";
|
||||
String Downheader = Date + "##" + StationID + "##" + SensorID + "##" + "DOWN" + "##"+String(IS1Sensor.shutterdown)+"##";
|
||||
String Downname = "/down/" + datestring + "_" + StationID + "_" + SensorID + "_" + "DOWN";
|
||||
String senderID = Date + "##" + StationID + "##" + SensorID + "##" + String(temprature) + "##"+yuliang+"##"+yuliangfz+"##";
|
||||
String othername = "/other/" +datestring + "_" + StationID + "_" + SensorID + "_" + String(temprature);
|
||||
// Serial.println(senderID);
|
||||
// Serial.println( Upheader);
|
||||
// Serial.println(Upheader.length());
|
||||
|
||||
//////////////////////上传up数据//////////////////
|
||||
write_log(log_path,10,"put up data");
|
||||
size_t lennn = IS1Sensor.SensorInfo.BandNum * 2 + Upheader.length();
|
||||
char *temp = new char[IS1Sensor.SensorInfo.BandNum * 2 + Upheader.length()];
|
||||
memcpy(temp, Upheader.c_str(), Upheader.length());
|
||||
char *str=(char *)IS1Sensor.UpData;
|
||||
int lenofis=IS1Sensor.SensorInfo.BandNum * 2 ;
|
||||
for (size_t i = 0; i < IS1Sensor.SensorInfo.BandNum * 2; i++)
|
||||
{
|
||||
//temp[Upheader.length()+i]=str[i];
|
||||
}
|
||||
memcpy(temp + Upheader.length(), IS1Sensor.UpData,IS1Sensor.SensorInfo.BandNum * 2);
|
||||
bool flagsucc = UpdateData("/weather/php/SpectralDataUp.php", temp, lennn);
|
||||
vTaskDelay(3000);
|
||||
if (!flagsucc)
|
||||
{
|
||||
sdcard::WriteStringToFile(Upname, temp, lennn);
|
||||
log_data ="Up_data upload failed,save to SD.";
|
||||
write_log(log_path,10,log_data);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("finish Put Up Data");
|
||||
log_data ="finish Put Up Data.";
|
||||
write_log(log_path,10,log_data);
|
||||
}
|
||||
delete[] temp;
|
||||
|
||||
|
||||
|
||||
//////////////////////上传Down数据//////////////////
|
||||
write_log(log_path,10,"put dowm data");
|
||||
lennn = IS1Sensor.SensorInfo.BandNum * 2 + Downheader.length();
|
||||
temp = new char[lennn];
|
||||
memcpy(temp, Downheader.c_str(), Downheader.length());
|
||||
str=(char *)IS1Sensor.DownData;
|
||||
lenofis=IS1Sensor.SensorInfo.BandNum * 2 ;
|
||||
for (size_t i = 0; i < IS1Sensor.SensorInfo.BandNum * 2; i++)
|
||||
{
|
||||
// temp[Downheader.length()+i]=str[i];
|
||||
}
|
||||
memcpy(temp + Downheader.length(), IS1Sensor.DownData,IS1Sensor.SensorInfo.BandNum * 2);
|
||||
flagsucc = UpdateData("/weather/php/SpectralDataUp.php", temp, lennn);
|
||||
vTaskDelay(3000);
|
||||
|
||||
if (!flagsucc)
|
||||
{
|
||||
sdcard::WriteStringToFile(Downname, temp, lennn);
|
||||
log_data ="Down_data upload failed,save to SD.";
|
||||
write_log(log_path,10,log_data);
|
||||
}else{
|
||||
Serial.println("finish Put Down Data");
|
||||
log_data ="finish Put Down Data.";
|
||||
write_log(log_path,10,log_data);
|
||||
}
|
||||
delete[] temp;
|
||||
|
||||
//////////////////////上传其他数据//////////////////
|
||||
lennn = 12 + senderID.length();
|
||||
temp = new char[lennn];
|
||||
memcpy(temp, senderID.c_str(), senderID.length());
|
||||
memcpy(temp + senderID.length(), windret + 3, 12);
|
||||
flagsucc = UpdateData("/weather/php/WindsensorUp.php", temp, lennn, "application/json");
|
||||
vTaskDelay(3000);
|
||||
if (!flagsucc)
|
||||
{
|
||||
sdcard::WriteStringToFile(othername, temp, lennn);
|
||||
log_data ="put Other Data failed,save to SD.";
|
||||
write_log(log_path,10,log_data);
|
||||
}else{
|
||||
Serial.println("finish Put Other Data");
|
||||
log_data ="finish Put Other Data.";
|
||||
write_log(log_path,10,log_data);
|
||||
}
|
||||
delete[] temp;
|
||||
|
||||
|
||||
//结束并等待一定时间
|
||||
// http->stop(); delay(100);return;
|
||||
|
||||
delay(120000);
|
||||
#ifdef DINBIAO
|
||||
abort();
|
||||
ESP.restart();
|
||||
#endif
|
||||
return;
|
||||
|
||||
// //////以下位测试代砄1<E7A084>71ᅣ1<EFBF84>77
|
||||
|
||||
// delay(3000);
|
||||
// // int err = http->get("/weather/php/WindsensorUp.php");
|
||||
// // if (err == 0)
|
||||
// {
|
||||
// SerialMon.println(F("failed to connect"));
|
||||
// delay(10000);
|
||||
// return;
|
||||
// }
|
||||
// int status = http->responseStatusCode();
|
||||
// SerialMon.print(F("Response status code: "));
|
||||
// SerialMon.println(status);
|
||||
// if (!status)
|
||||
// {
|
||||
// delay(10000);
|
||||
// return;
|
||||
// }
|
||||
|
||||
// SerialMon.println(F("Response Headers:"));
|
||||
// while (http->headerAvailable())
|
||||
// {
|
||||
// String headerName = http->readHeaderName();
|
||||
// String headerValue = http->readHeaderValue();
|
||||
// SerialMon.println(" " + headerName + " : " + headerValue);
|
||||
// }
|
||||
|
||||
// int length = http->contentLength();
|
||||
// if (length >= 0)
|
||||
// {
|
||||
// SerialMon.print(F("Content length is: "));
|
||||
// SerialMon.println(length);
|
||||
// }
|
||||
// if (http->isResponseChunked())
|
||||
// {
|
||||
// SerialMon.println(F("The response is chunked"));
|
||||
// }
|
||||
|
||||
// String body = http->responseBody();
|
||||
// SerialMon.println(F("Response:"));
|
||||
// SerialMon.println(body);
|
||||
|
||||
// SerialMon.print(F("Body length is: "));
|
||||
// SerialMon.println(body.length());
|
||||
// delay(5000);
|
||||
// // Shutdown
|
||||
|
||||
// // http->stop();
|
||||
}
|
Reference in New Issue
Block a user