Arduino ESP8266 学习

1.Esp8266 UDP使用(给服务器发送IP、MAC地址)

#include <WiFiUdp.h>

WiFiUDP _udp;

int _udpPort = 8266;

_udp.begin(_udpPort); //开启UDP服务

//开启UDP服务后 给服务器发送IP、MAC

void Button::_received() {

    IPAddress localIP = WiFi.localIP();

    byte mac[6];

    WiFi.macAddress(mac);

    String data = "{\"ip\": \"" + localIP.toString() + "\",\"mac\": \"";

    for (int i = 0; i < 6; i++) {

    data += String(mac[i], HEX);

    if (i < 5) {

      data += ":";

    }

  }

    data += "\"}";

    //发送IP、MAC给服务器

    _udp.beginPacket(serverIP1,serverPort1);

    _udp.print(data);

    _udp.endPacket();

    Serial.println("Data sent to server: " + data);

    _massage();

}

2.ESP  Esp8266 UDP使用(UDP接收到token,并发送token、sn、设备类型给服务器)

//UDP接收到token 并发送token sn 设备类型给服务器

void Button::_massage(){

    Serial.print("0000000000000000000000000000000\n");

    int packetSize = _udp.parsePacket();

    if (packetSize) {

    //读取接收到的数据包

    int n = _udp.read(_packetBuffer, UDP_TX_PACKET_MAX_SIZE);

    _packetBuffer[n] = 0;

    Serial.println(_packetBuffer);

    JsonDocument doc;

    deserializeJson(doc, _packetBuffer);

    //解析json数据

    if (doc.containsKey("cmdType")) {

      int cmd = doc["cmdType"];

      switch(cmd){

        case 0:

          if(doc.containsKey("token")){

          const char *token =  doc["token"];

          Serial.printf("Parsed token: %s\n", token);

          Serial.print("Received token: ");

          Serial.println(token);

          _sendTokenAndDeviceInfo(token);

          }

          break;

      }

    }

    Serial.print("99999999999999999999999999\n");

  }

  Serial.print("11111111111111111111111111111111\n");

}    

void Button::_sendTokenAndDeviceInfo(const char* token){

  JsonDocument doc;

  char json[1024];

  doc["cmdType"] = 2;

  doc["token"] = token;

  doc["SN"] = zonwey.getSN();

  doc["deviceType"] = DEVICE_TYPE;

  serializeJson(doc,json);// 将JSON对象序列化为字符串

  _udp.beginPacket(serverIP1,serverPort1);

  _udp.write(json);

  _udp.endPacket();

  Serial.print("2222222222222222222222222222\n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值