代码拉取完成,页面将自动刷新
#include "include.h"
void setup() {
/* 初始化LED灯IO口*/
Led_blink_init();
/* 初始化eeprom*/
eeprom_init();
/* 初始化串口*/
serial_init();
/* 查询设备网络状态-初始化*/
Net_Status_Query_Init();
}
void loop() {
/* 串口数据接收*/
while(Serial.available()){
ESP.wdtFeed();
/* 装进串口数据缓冲数组中*/
system_status.serial_buf = system_status.serial_buf + char(Serial.read());
/* delay 2ms,因为muc接收串口中缓存数据的速度比muc接受串口数据的速度快*/
delay(2);
}
/* 如果缓冲数组中有数据*/
if(system_status.serial_buf.length()>0){
/* 打印*/
// serial_println(system_status.serial_buf);
/* 将json字符串转化成json对象*/
system_status.json_object = JSON.parse(system_status.serial_buf);
/* 如果解析失败,会报错*/
if(JSON.typeof(system_status.json_object) == "undefined"){
/* 用户输出*/
user_serial_print("error-format\r\n");
}
else {
if (system_status.json_object.hasOwnProperty("key")) {
system_status.secret_key = (const char*) system_status.json_object["key"];
/* 开始请求*/
http_post_query_secret(system_status.serial_buf);
}
else if (system_status.json_object.hasOwnProperty("query")) {
sprintf(system_status.debug_str, "status<%d>\r\n", system_status.net_status_last);
/* 用户输出*/
user_serial_print(system_status.debug_str);
}
/* 如果有 type 键名(type建明对应的是通讯协议)*/
else if ((system_status.json_object.hasOwnProperty("type"))) {
if(system_status.secret_key_value == true){
/* 获得通讯协议的名称*/
String type_name = (const char*) system_status.json_object["type"];
/* 如果是tcp协议*/
if(type_name == net_com_protocol.tcp){
/* 记录tcp服务器的参数*/
tcp_config_parameter.ip_add = (const char*) system_status.json_object["ip"];
tcp_config_parameter.ip_port = (const char*) system_status.json_object["port"];
tcp_config_parameter.msg = (const char*) system_status.json_object["msg"];
/* 记录当前的通讯协议是 tcp*/
system_status.current_protocol = "tcp";
/* 用户输出*/
user_serial_print("Ok\r\n");
}
/* 如果是htpp post协议*/
else if(type_name == net_com_protocol.post){
/* 记录当前的通讯协议是 post*/
http_config_parameter.server_ip = (const char*) system_status.json_object["url"];
http_config_parameter.parameter = (const char*) system_status.json_object["page"];
http_config_parameter.msg = (const char*) system_status.json_object["msg"];
system_status.current_protocol = "post";
/* 开始请求*/
http_post_request(http_config_parameter.msg);
/* 用户输出*/
user_serial_print("Ok\r\n");
}
/* 如果是htpp get协议*/
else if(type_name == net_com_protocol.get){
/* 记录当前的通讯协议是 get*/
http_config_parameter.server_ip = (const char*) system_status.json_object["url"];
http_config_parameter.parameter = (const char*) system_status.json_object["page"];
system_status.current_protocol = "get";
/* 开始请求*/
http_get_request();
/* 用户输出*/
user_serial_print("Ok\r\n");
}
/* 如果是udp协议*/
else if(type_name == net_com_protocol.udp){
/* 记录当前的通讯协议是 udp*/
udp_config_parameter.ip_add = (const char*) system_status.json_object["ip"];
udp_config_parameter.ip_local_port = (const char*) system_status.json_object["l_port"];
udp_config_parameter.ip_remote_port = (const char*) system_status.json_object["r_port"];
udp_config_parameter.msg = (const char*) system_status.json_object["msg"];
system_status.current_protocol = "udp";
/* 开始请求*/
udp_send_msg(udp_config_parameter.msg);
/* 用户输出*/
user_serial_print("Ok\r\n");
}
/* 如果是mqtt协议*/
else if(type_name == net_com_protocol.mqtt){
/* 记录当前的通讯协议是,mqtt*/
mqtt_config_parameter.ip_add = (const char*) system_status.json_object["url"];
mqtt_config_parameter.ip_port = (const char*) system_status.json_object["port"];
mqtt_config_parameter.msg_status_type = (const char*) system_status.json_object["m_type"];
mqtt_config_parameter.topic = (const char*) system_status.json_object["topic"];
mqtt_config_parameter.msg = (const char*) system_status.json_object["msg"];
mqtt_config_parameter.client_Id = (const char*) system_status.json_object["id"];
mqtt_config_parameter.user_name = (const char*) system_status.json_object["name"];
mqtt_config_parameter.user_pwd = (const char*) system_status.json_object["pwd"];
system_status.current_protocol = "mqtt";
/* 用户输出*/
user_serial_print("Ok\r\n");
}
/* 如果是其他的协议,报错*/
else {
/* 用户输出*/
user_serial_print("error-protocol\r\n");
}
}
else {
/* 用户输出*/
user_serial_print("error-secret\r\n");
}
}
}
/* 清空串口缓冲区,防止在过程中的串口数据 带来的影响*/
system_status.serial_buf = "";
/* 将串口缓冲区的数据清空*/
serial_buf_clear();
}
/* 要在主循环中去重连,在中断中连接的话,muc看门狗会复位*/
/* 没有连接WIFI*/
if(system_status.net_status == NO_Connect_Wifi){
system_status.net_status_last = system_status.net_status;
switch_Led_Fre_Blink(Led_Blink_General_fast);
system_status.Led_blink_interval = Led_Blink_General_fast;
system_status.net_status = Other_Status;
/* 重连*/
wifi_reconnection();
}
/* 已经连接服务器*/
else if(system_status.net_status == Connected_Server){
system_status.net_status_last = system_status.net_status;
switch_Led_Fre_Blink(Led_Blink_very_slow);
system_status.Led_blink_interval = Led_Blink_very_slow;
system_status.net_status = Other_Status;
}
/* 没有连接服务器*/
else if(system_status.net_status == NO_Connect_Server){
system_status.net_status_last = system_status.net_status;
switch_Led_Fre_Blink(Led_Blink_General_slow);
system_status.Led_blink_interval = Led_Blink_General_slow;
system_status.net_status = Other_Status;
/* 如果是TCP协议*/
if(system_status.current_protocol == net_com_protocol.tcp){
/* 调用TCP服务器重连函数*/
tcp_server_reconnection();
}
else if(system_status.current_protocol == net_com_protocol.mqtt){
/* 调用mqtt服务器重连函数*/
mqtt_server_reconnect();
}
}
client_CallBack_function();
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。