ESP32 softAP SSID nie stała
Chciałbym móc ustawić SSID wifi w setup (), więc mogę dostosować go na podstawie adresu MAC lub czegoś podobnego. (unikając ESP z tym samym kodem i tym samym SSID). Jednak ponieważ wymaga stałej, nie wydaje się to możliwe, czy czegoś mi brakuje?
Używam platformyIO, jeśli to ma znaczenie ...
Odpowiedzi
constParametr do funkcji nie definiuje, co może być przekazane. Zamiast tego jest „obietnicą” ze strony funkcji, że nie zmodyfikuje przekazywanych danych.
W C, kiedy przekazujesz „ciąg” (który jest w rzeczywistości tablicą znaków) do funkcji, w rzeczywistości nie przekazujesz tego ciągu (jak w treści). Naprawdę wystarczy przekazać wskaźnik do lokalizacji w pamięci, w której przechowywany jest łańcuch.
Jest całkowicie możliwe, że funkcja może następnie wprowadzić modyfikacje do przekazanego „ciągu znaków”, który będzie modyfikował oryginalne dane w pamięci. W wielu sytuacjach nie jest to pożądane.
Więc oznaczając parametr, gdy constpowiesz kompilatorowi "Od tego momentu dane wskazywane przez tę zmienną nie mogą być zmieniane". Wszelkie próby zapisu do pamięci przy użyciu tej zmiennej będą blokowane przez kompilator.
Nie ma żadnej różnicy między, powiedzmy, a char *i a, const char *poza tym, jak kompilator traktuje próby zapisu do nich.
Kiedy przekazujesz a char *do funkcji, która oczekuje, const char *że wskaźnik jest „uaktualniany” do stałej, więc żadne próby zmiany danych nie będą dozwolone.
Odwrotność jest jednak niedozwolona - nie możesz (lub nie powinieneś) próbować konwertować a const char *na a, char *jak w niektórych systemach (systemy o architekturze „Princeton” z pojedynczą monolityczną przestrzenią adresową pamięci) wskaźnik może wskazywać na dane przechowywane w flash, a próba zapisu do tego oczywiście zakończy się niepowodzeniem.
Funkcja, którą wywołujesz, aby ustawić identyfikator SSID, obiecuje jedynie, że nie będzie próbowała zmienić przekazywanych danych. Nie ma znaczenia, czy jest stała, czy nie - obie będą traktowane jako stałe i nie zostaną zmienione.
Biblioteka WifiManager może Ci pomóc , ma portal dostępowy do konfigurowania połączenia Wi-Fi w locie. Ma sporo opcji konfiguracyjnych, aby dopasować go do Twojej woli, jeśli się nie mylę, mam nadzieję, że dobrze Ci służy.