Fehler "'pCharacteristic' was not declared in this scope"

Hallo zusammen,

kann mir jemand sagen, warum ich den folgenden Fehlertext in der Arduino IDE erhalte ?

 Arduino: 1.8.10 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

C:\Users\simon\AppData\Local\Temp\arduino_modified_sketch_717561\BLE_server.ino: In function 'void loop()':

BLE_server:47:2: error: 'pCharacteristic' was not declared in this scope

  pCharacteristic->setValue("HTest123");

  ^

Mehrere Bibliotheken wurden für "BLEDevice.h" gefunden
 Benutzt: C:\Users\simon\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\BLE
 Nicht benutzt: C:\Users\simon\Documents\Arduino\libraries\BLEPeripheral
exit status 1
'pCharacteristic' was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Das Programm habe ich auch angehangen (Bluetooth Low Energy Beispiel).

Was ich nicht verstehe:

Die Variable “pCharacteristic” wird doch bereits im Setup erfolgreich beschrieben. Warum funktioniert das nicht, wenn ich das in der Loop mache? Ich würde gerne den Wert eines Sensors in der Loop zyklisch abfragen und der Variable pCharacteristic zuweisen.

Vielen Dank schonmal für eure Hilfe!

BLE_server.ino (1.78 KB)

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Erstens:
Glaube der Meldung.
Zweifle an deinem Wissen, nicht an der Meldung.

Zweitens:

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Warum tust du das nicht?

Drittens:
Suchtipp: “C++ Geltungsbereich von Variablen”

Lokale Variablen, in einer Funktion, werden auch nur in der Funktion gesehen.

simon1516:
Die Variable "pCharacteristic" wird doch bereits im Setup erfolgreich beschrieben. Warum funktioniert das nicht, wenn ich das in der Loop mache? Ich würde gerne den Wert eines Sensors in der Loop zyklisch abfragen und der Variable pCharacteristic zuweisen.

Variablen sind nur innerhalb des Blocks gültig („sichtbar“), in dem sie deklariert wurden. Deklariere die Variable außerhalb von setup() - dann ist sie global und überall gültig.

Gruß

Gregor

Tommy56:
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

→ gemacht

Erstens:
Glaube der Meldung.
Zweifle an deinem Wissen, nicht an der Meldung.

Zweitens:
Quote

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Warum tust du das nicht?

Drittens:
Suchtipp: “C++ Geltungsbereich von Variablen”

Lokale Variablen, in einer Funktion, werden auch nur in der Funktion gesehen.

Habe die Variable nun außeralb deklariert, Danke für den Hinweis. Die detailiertere Fehlerdiagnose werde ich mir fürs nächste mal vorbehalten :slight_smile:

Variablen sind nur innerhalb des Blocks gültig („sichtbar"), in dem sie deklariert wurden. Deklariere die Variable außerhalb von setup() - dann ist sie global und überall gültig.

Gruß

Gregor

schon passiert, danke!

Hi

Trotzdem schaden die ausführlichen Meldungen nicht - das Ziel sollte sein, ALLES, was beim Kompilieren rot angezeigt wird, auszumerzen.
Beim Hochladen ist ja alleine schon der Ladefortschritt in roten Lettern … Das darf bleiben :slight_smile:

MfG