под ядром 2.0.5 не скомпилировалось
Ядро от Espressif? Покажите скриншоты интерфейса Arduino IDE, пожалуйста.
под 2.11 сейчас пробую, аналогично
In file included from D:\ARDUINO\arduino-1.8.19\portable\sketchbook\2023\Billy_the_Relay\ESP_HTTP.h:20,
from D:\ARDUINO\arduino-1.8.19\portable\sketchbook\2023\Billy_the_Relay\ESP_HTTP.cpp:18:
config_ASCII_cmd_handler.h:21:41: error: multi-line comment [-Werror=comment]
#define CMD_1 "SETLOCALSSID=" // Изменение SSID точки доступа локальной сети Wi-Fi, хранящегося \
^
config_ASCII_cmd_handler.h:23:41: error: multi-line comment [-Werror=comment]
#define CMD_2 "PRINTLOCALSSID" // Вывод SSID точки доступа локальной сети Wi-Fi, хранящегося во встроенном \
^
config_ASCII_cmd_handler.h:25:41: error: multi-line comment [-Werror=comment]
#define CMD_3 "SETLOCALPSWD=" // Изменение пароля точки доступа локальной сети Wi-Fi, хранящегося \
^
config_ASCII_cmd_handler.h:27:41: error: multi-line comment [-Werror=comment]
#define CMD_4 "SETLOCALPORT=" // Изменение номера порта, используемого устройством как локальным \
^
config_ASCII_cmd_handler.h:29:41: error: multi-line comment [-Werror=comment]
#define CMD_5 "PRINTLOCALPORT" // Вывод номера порта, используемого устройством как локальным \
^
config_ASCII_cmd_handler.h:34:41: error: multi-line comment [-Werror=comment]
#define CMD_9 "SETIOTIP=" // Изменение IP-адреса удалённого сервера, хранящегося во встроенном \
^
config_ASCII_cmd_handler.h:36:41: error: multi-line comment [-Werror=comment]
#define CMD_10 "PRINTIOTIP" // Вывод IP-адреса удалённого сервера, хранящегося во встроенном накопителе \
^
config_ASCII_cmd_handler.h:38:41: error: multi-line comment [-Werror=comment]
#define CMD_11 "SETIOTPORT=" // Изменение номера порта, в который устройство будет стучаться к удалённому \
^
config_ASCII_cmd_handler.h:40:41: error: multi-line comment [-Werror=comment]
#define CMD_12 "PRINTIOTPORT" // Вывод номера порта, в который устройство будет стучаться к удалённому \
^
config_ASCII_cmd_handler.h:42:41: error: multi-line comment [-Werror=comment]
#define CMD_13 "SETIOTREQMSG=" // Изменение текста запроса, направляемого устройством удалённому серверу, \
^
config_ASCII_cmd_handler.h:44:41: error: multi-line comment [-Werror=comment]
#define CMD_14 "PRINTIOTREQMSG" // Вывод текста запроса, направляемого устройством удалённому серверу, \
^
config_ASCII_cmd_handler.h:46:41: error: multi-line comment [-Werror=comment]
#define CMD_15 "SETIOTREQPERIOD=" // Изменение периодичности (в миллисекундах) направления запросов удалённому \
^
cc1plus.exe: some warnings being treated as errors
Ого. В первый раз вижу, чтобы продление однострочного комментария (“//”, C++ - стайл) через бэкслэш рассматривалось компилятором как ошибка.
Понял, буду иметь в виду, спасибо за фидбэк.
у меня рука такая, если что-то теоретически может не заработать оно у меня обязательно не заработает, надо искать подработку тестеровщика )))
Запилил хотфикс, заменил на старые добрые С-комменты
Точно!!! Я эти многострочные комментарии просто сам подправил и забыл Вам про это сказать.
На самом деле, продлевать таким образом комментарий, конечно же, нельзя, но некоторые компиляторы смотря “ширше”, на то у них соответствующие опции есть.
осталось выяснить под каким ядром это ширше компилировалось
Под любым можно опции компилятора настроить.
ну так в скетче тогда и настраивать, не?
Кстати, вспомнил, почему решил проигнорировать ворнинги по поводу const char* и ISO C++. У меня функция handle_cmd_helper_send() отправляет как консты, так и обычные строки (причём успешно).
Получается, нужно либо пилить перегруженную функцию, либо каждый раз делать что-то вроде
char msg[STR_MAX_LEN + 1] = {0};
strcpy(msg, "My string literal");
handle_cmd_helper_send(msg);
D:\ARDUINO\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.14\cores\esp32\esp32-hal-uart.c: In function 'uartSetPins':
D:\ARDUINO\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.14\cores\esp32\esp32-hal-uart.c:153:9: warning: 'return' with no value, in function returning non-void
return;
^~~~~~
D:\ARDUINO\arduino-1.8.19\portable\packages\esp32\hardware\esp32\2.0.14\cores\esp32\esp32-hal-uart.c:149:6: note: declared here
bool uartSetPins(uint8_t uart_num, int8_t rxPin, int8_t txPin, int8_t ctsPin, int8_t rtsPin)
^~~~~~~~~~~
Либо забить и написать самому, без подобных “фич”, но короче и более адекватно…
Это Вы переутомились. Расслабьтесь и подумайте.
Достаточно просто заменить тип параметра в трёх функциях
handle_cmd_helper_send
ESP_TCP_server_send_msg
ESP32_BT_send_msg
с char *
на const char *
, как проблема немедленно исчезнет.
Больше ничего там делать не надо. Всё будет как надо куда надо передаваться.
Меня вот это удивило:
if (buf_size - strlen(buf) >= 3) { // Один байт для CR, второй для LF, третий для нуля.
buf[strlen(buf)] = '\r';
buf[strlen(buf)] = '\n';
buf[strlen(buf)] = '\0';
return 1;
}
А вот и нет.
C:\Users\dmitriy.efimov\Desktop\Billy_the_Relay-main\Billy_the_Relay\Billy_the_Relay.ino: In function 'void handle_cmd_helper_send(const char*)':
Billy_the_Relay:998:29: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
998 | ESP_TCP_server_send_msg(msg);
| ^~~
| |
| const char*
In file included from C:\Users\dmitriy.efimov\Desktop\Billy_the_Relay-main\Billy_the_Relay\Billy_the_Relay.ino:34:
C:\Users\dmitriy.efimov\Desktop\Billy_the_Relay-main\Billy_the_Relay\ESP_TCP.h:33:36: note: initializing argument 1 of 'void ESP_TCP_server_send_msg(char*)'
33 | void ESP_TCP_server_send_msg(char *msg);
| ~~~~~~^~~
exit status 1
invalid conversion from 'const char*' to 'char*' [-fpermissive]
А, стоп. Сейчас кое-что переделаю.
А вот и да. Вы просто неаккуратно это сделали. Надо это сделать для всех трёх функций и в их предварительном описании, и в определении, т.е. в шести местах! Сделайте аккуратно и всё получится!
Всё, теперь получилось. Добро пожаловать в контрибьюторы нашего опенсорс-проекта
Евгений Петрович, где проставляться будете?