• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Как объявить глобальный объект сервера TCP и назначить ему порт во время выполнения?

Atom

Member
Есть чудесный класс WiFiServer. Но что бы он работал, нужно задать ему определенный порт:
Код:
WiFiServer serverTCP(1081); // этот код компилится без проблем
Но стоит только объявить пременную, с настройкой в зависимости от параметра, то такой проект уже скомпилировать невозможно:
Код:
WiFiServer serverTCP; //error: no matching function for call 'WiFiServer::WiFiServer()'

void setupTCP(int tcpPort){

    serverTCP.begin(tcpPort);
}
 

Юрий Ботов

Moderator
Команда форума
WiFiServer* server;
uint16_t xx = 80;
...
server = new WiFiServer(xx);
server->begin();
...
WiFiClient client = server->available();


так?
 

Atom

Member
Учим C без классов :)
Меня сомнение взяло при использовании конструктора по умолчанию
Код:
WiFiServer serverTCP(1081); // этот код компилится без проблем
/code]

Поковыряв исходники и обнаружив коструктор с пустыми параметрами пытался сделать так:
[code]
WiFiServer* server();//вызов конструктора ()
...
(WiFiServer*)server) =  WiFiServer(tcp_port); //как бы создаем новый объект, вызовом конструктора (port)
((WiFiServer*)server).begin();
...
WiFiClient client = ((WiFiServer*).available();
Басня компилилась и даже инициализацию проходила нормально. Но вот в loop-е, где должно идти создание клинта уже рушилось все, что можно.
 
Сверху Снизу