为什么串行监视器仅显示“点”的无休止循环,而不显示其他串行打印?

时间:2019-06-05 17:11:01

标签: json serial-port esp8266 arduino-ide

代码应该在void循环中传输JSON对象和打印“ hello”,但它只是从void设置中重复“点”。我错过了什么?

我在主循环中尝试了不同的串行打印,但实际上没有一个被传输。无效设置中可能存在无限循环吗?

#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include <vector>

const char* apSsid     = "ap-ssid";
const char* apPassword = "ap-password";
const char* clientSsid     = "client-ssid";
const char* clientPassword = "client-password";


WiFiEventHandler probeRequestPrintHandler;

String macToString(const unsigned char* mac) {
  char buf[20];
  snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
           mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  return String(buf);
}

std::vector<WiFiEventSoftAPModeProbeRequestReceived> myList;

void onProbeRequestPrint(const WiFiEventSoftAPModeProbeRequestReceived& evt) {
  myList.push_back(evt);
}

void setup() {
  Serial.begin(115200);
  Serial.print("Hello!");

  // Don't save WiFi configuration in flash - optional
  WiFi.persistent(false);

  WiFi.mode(WIFI_AP_STA);
  WiFi.softAP(apSsid, apPassword);
  WiFi.begin(clientSsid, clientPassword);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(100);
  }
  Serial.print("");
  probeRequestPrintHandler = WiFi.onSoftAPModeProbeRequestReceived(&onProbeRequestPrint);
}

void loop() {
  delay(3000);
  String json = "";
  DynamicJsonBuffer jsonBuffer;
  JsonObject& root = jsonBuffer.createObject();
  JsonArray& probes = root.createNestedArray("probes");
  for(WiFiEventSoftAPModeProbeRequestReceived w : myList){
    JsonObject& probe = probes.createNestedObject();
    probe["address"] = macToString(w.mac);
    probe["rssi"] = w.rssi;
  }
  myList.clear();
  root.printTo(json);
  Serial.print(json);
  Serial.print("hallo");

}

它应该转移点,一个json对象和单词“你好”

1 个答案:

答案 0 :(得分:0)

这是因为ESP8266找不到具有SSID client-ssid和密码client-password的WiFi接入点。

除非连接到所述访问点,否则它将在屏幕上打印.

您可以将接入点参数更改为ESP8266范围内可见的参数,也可以将代码中的接入点SSID和密码更改为1。

您可以使用WiFi manager避免使用硬编码的SSID名称和密码。