2017-05-16 6 views
0

Ich habe andere Entwicklungsplattformen für die Arbeit mit Atmel (Arduino/ATTiny) und Espressif (ESP8266) basierten Geräten angeschaut. Zuletzt habe ich PlatformIO installiert. Aber ich habe Probleme mit der Anerkennung der globalen Reichweite. Nicht sicher ...Scope-Probleme (?) Mit PlatformIO

Ich habe eine Header-Datei, die ein typedef für eine Konfiguration Struktur umfasst:

typedef struct { 
     char idPrefix[8]; 
     char defPass[16]; 
     char targetSSID[32]; 
     char targetPass[64]; 
     uint8_t beepInRange; 
     uint8_t beepOutofRange; 
} devConfig; 

Ich möchte eine Konfigurationsvariable in meiner ino Datei zuweisen:

devConfig myConfig; 

aber wenn ich versuche, es in meinem Setup oder Schleife zuzugreifen, zB:

void setup() { 
    strncpy(myConfig.defPass, "somepass", 16); 
} 

es spuckt die "Fehler: 'MyConfig' wurde in diesem Bereich nicht deklariert", wenn ich versuche, Plattform auszuführen

Unterstützt dieses Ding nicht globale Variablen in der gleichen Weise wie Arduino? Was mache ich falsch? Jede Hilfe wird geschätzt.

+0

Was passiert, wenn man die ganze Struktur in Ihre Datei einfügen? –

Antwort

1

Ich denke, Sie müssen vergessen haben, #include "Arduino.h" Header-Datei im Hauptcode hinzuzufügen. Beachten Sie auch, dass Platform IO CPP-Dateien nicht in einer Datei kompiliert.

main.cpp

// Without Arduino.h this code will not compile 
#include "Arduino.h" 
#include "demo.h" 

devConfig myConfig; 

void setup() { 
    strncpy(myConfig.defPass, "somepass", 16); 
} 

void loop() { 

} 

DEMO.H

typedef struct { 
     char idPrefix[8]; 
     char defPass[16]; 
     char targetSSID[32]; 
     char targetPass[64]; 
     uint8_t beepInRange; 
     uint8_t beepOutofRange; 
} devConfig; 
+0

Ja, das ist im Grunde die Struktur, die ich hatte und Sie haben vielleicht Recht. Ich hatte Arduino.h in einer Klassendatei enthalten, mit der ich auch spielte, aber hörte nicht auf zu denken, dass ich es manuell in die Haupt-Ino-Datei aufnehmen müsste. Ich werde das später heute Abend versuchen. Vielen Dank. – Scott

+0

Wenn dies Ihre Frage klarstellt, akzeptieren und upvote die Antwort, so dass andere Leute es nützlich finden können. –

+0

Ich musste es zuerst testen! lol =========================== [ERFOLG] dauerte 21,32 Sekunden ================== ======== danke – Scott