C 错误:';客户';未在此范围内声明;
我在文件CameraWebServer上设置了Mqtt服务器,但是当我发布一些东西时,在另一个文件(app_httpd.cpp)中 app_httpd.cpp:195:17:错误:未在此中声明“客户端” 范围 我试图包括和C 错误:';客户';未在此范围内声明;,c,arduino,C,Arduino,我在文件CameraWebServer上设置了Mqtt服务器,但是当我发布一些东西时,在另一个文件(app_httpd.cpp)中 app_httpd.cpp:195:17:错误:未在此中声明“客户端” 范围 我试图包括和WiFiClient和PubSubClient客户端(espClient)
WiFiClient代码>和<代码>PubSubClient客户端(espClient)但是我有
“客户”的多重定义
CameraWebServer.ino
#include "esp_camera.h"
#include <WiFi.h>
#include <PubSubClient.h>
// Select camera model
#define CAMERA_MODEL_AI_THINKER
#include "camera_pins.h"
const char* ssid = "***";
const char* password = "***";
WiFiClient espClient;
PubSubClient client(espClient);
void startCameraServer();
void MqttSetup() {
// Add your MQTT Broker IP address, example:
//const char* mqtt_server = "192.168.1.144";
const char* mqtt_server = "192.168.***.***";
client.setServer(mqtt_server, 1883);
Serial.print("Attempting MQTT connection...");
if (client.connect("ESP32-Cam Client")) {
Serial.println("MQTT connected");
// Subscribe
client.subscribe("camera/message");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
Serial.println();
[...]
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
MqttSetup();
startCameraServer();
Serial.print("Camera Ready! Use 'http://");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
}
void loop() {
// put your main code here, to run repeatedly:
delay(10000);
}
既有太多的代码需要查看,也没有足够的代码可以开始查看。有十几个头文件,我们不知道其中有什么。请发布一条。@DimKot错误消息足够清楚。@VladFrommoskow是的,很清楚!但是如何使客户机成为全局变量呢?谢谢你,代词是m。Υ你是对的,这是我第一次!:)它是客户机的“多个定义”
,但随附的代码仅显示一个定义(PubSubClient(espClient);
)。找到另一个客户端的定义位置,您可能会找到解决方案。
#include "esp_http_server.h"
#include "esp_timer.h"
#include "esp_camera.h"
#include "img_converters.h"
#include "camera_index.h"
#include "Arduino.h"
[...]
static int run_face_recognition(dl_matrix3du_t *image_matrix, box_array_t *net_boxes){
dl_matrix3du_t *aligned_face = NULL;
int matched_id = 0;
aligned_face = dl_matrix3du_alloc(1, FACE_WIDTH, FACE_HEIGHT, 3);
if(!aligned_face){
Serial.println("Could not allocate face recognition buffer");
return matched_id;
}
if (align_face(net_boxes, image_matrix, aligned_face) == ESP_OK){
if (is_enrolling == 1){
int8_t left_sample_face = enroll_face(&id_list, aligned_face);
if(left_sample_face == (ENROLL_CONFIRM_TIMES - 1)){
Serial.printf("Enrolling Face ID: %d\n", id_list.tail);
}
Serial.printf("Enrolling Face ID: %d sample %d\n", id_list.tail, ENROLL_CONFIRM_TIMES - left_sample_face);
rgb_printf(image_matrix, FACE_COLOR_CYAN, "ID[%u] Sample[%u]", id_list.tail, ENROLL_CONFIRM_TIMES - left_sample_face);
if (left_sample_face == 0){
is_enrolling = 0;
Serial.printf("Enrolled Face ID: %d\n", id_list.tail);
}
} else {
matched_id = recognize_face(&id_list, aligned_face);
if (matched_id >= 0) {
Serial.printf("Match Face ID: %u\n", matched_id);
rgb_printf(image_matrix, FACE_COLOR_GREEN, "Hello Subject %u", matched_id);
} else {
Serial.println("No Match Found");
rgb_print(image_matrix, FACE_COLOR_RED, "Intruder Alert!");
matched_id = -1;
**client.publish("camera/message", "Intruder Alert!");**
}
}
} else {
Serial.println("Face Not Aligned");
//rgb_print(image_matrix, FACE_COLOR_YELLOW, "Human Detected");
}
dl_matrix3du_free(aligned_face);
return matched_id;
}
[...]
}
[...]
}