Как разделить скетч на части?
- Войдите на сайт для отправки комментариев
Вс, 07/11/2021 - 14:15
Не могу разделить скетч на модули.
Помогите разобраться почему не работает. Хочу разделить скетч на части, чтобы функции HTTP и FTP были в отдельных файлах.
Когда все в одном файле работает, но только разношу по разным, выдает ошибку, и не могу понять как ее исправить.
Есть файлы HTTP.h, HTTP.cpp, FFS.h, FFS.cpp.
ESP8266WebServer HTTP(80) определен в файле HTTP.cpp, но также используется и в FFS.cpp.
Подскажите как сделать, чтобы он был виден в FFS.cpp, а то пишет
'HTTP' was not declared in this scope идентификатор "HTTP" не определен. Буду очень благодарен, если кто тыкнет, что я неправильно делаю.
Часть кода файла HTTP.cpp #include "HTTP.h" // Объект веб-сервера. Будет прослушивать порт 80 (по умолчанию для HTTP) ESP8266WebServer HTTP(80); void HTTP_init(void) { HTTP.on("/restart", handle_Restart); // Перезагрузка модуля по запросу вида .../restart?device=ok // Запускаем HTTP сервер HTTP.begin(); } void handle_Restart() { String restart = HTTP.arg("device"); if (restart == "ok") ESP.restart(); HTTP.send(200, "text/plain", "OK"); } --------------------------------------------------------------------------------------------------------- Часть кода файла FFS.cpp #include "FFS.h" FtpServer ftpSrv; // Определяем объект для работы с модулем по FTP (для отладки HTML) void FTP_init(String _FTP_Name, String _FTP_password) { SPIFFS.begin(); // Инициализируем работу с файловой системой ftpSrv.begin(_FTP_Name, _FTP_password); // Поднимаем FTP-сервер (логин: FTP_Name, пароль: FTP_password) } // Здесь функции для работы с файловой системой String getContentType(String filename) { if (HTTP.hasArg("download")) //здесь выдает ошибку return "application/octet-stream"; else if (filename.endsWith(".htm")) return "text/html"; else if (filename.endsWith(".html")) return "text/html"; }
А почему второй строки из первого кода нет во втором коде? Должна быть! Но при этом, сам файл http.h должен быть написан грамотно, а у Вас он секретный, так что ХЗ. Если хотите нормального разговора - файлы публикуйте полностью и сообщение об ошибке полностью.
Та файлы не секретные. Выкладываю h-файлы. Я думаю, что нужно как то подключить один файл к другому, но у меня ничего не получается.
Вот полные версии файлов.
Вы думаете, что вот это я просто так написал? Делать этого не нужно?
А почему второй строки из первого кода нет во втором коде? Должна быть!
И где сообщение об ошибке? Про него я тоже зря пальцы об клавиши бил?
И да, для чего Вы соединяете по два файла? Чтобы создать неудобство тому, кто желает Вам помочь и для этого захочет попробовать компилировать у себя?
Файлы выкладывайте всегда полностью, каждый сам по себе и, если они больше строк 10-15, сворачивайте из под спойлер.
Благодарен Вам, что пытаетесь мне помочь, и прошу прощения, что я так туплю. Просто я впервые на таком форуме пишу сообщения. Обычно мне хватало просто читать.
Выкладываю все файлы по отдельности, и сообщения об ошибках, которые выдает Planformio.
HTTP.h добавил в FFS.cpp, но ничего не меняется. Выдает ошибку в терминал:
'HTTP' was not declared in this scope
идентификатор "HTTP" не определен
'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
Ну с LittleFS понятно, это не критично. А вот с остальными никак не могу разобраться. Я только учусь на старость лет, но раньше таких проблем никогда не было. Не первый раз программирую отдельными файлами. Если писать код в Ардуино иде одним файлом, или даже делить на куски, то все работает. Создаю файлы HTTP.ino FFS.ino и т.д. все работает. А вот в Planformio при создании cpp и h не работает. Работает только если все писать в один файл. Но тогда файл у меня получиться очень огромный. Хотелось бы сделать модульно. Ниже все файлы отдельно.
Выкладываю все файлы по отдельности, и сообщения об ошибках, которые выдает Planformio.
Подписывайте где какой - трудно же угадывать!
И про сворачивание по спойлер я Вам зря писал?
Делайте это ф одном сообщении. Название файла, под ним содержимое под спойлером.
HTTP.h добавил в FFS.cpp, но ничего не меняется. Выдает ошибку в терминал:
Добавьте тужа же (ниже include)
Огромное спасибо. Все заработало!!!