Я искал другие платформы разработки для работы на устройствах на базе Atmel (Arduino / ATTiny) и Espressif (ESP8266). Совсем недавно я установил PlatformIO. Но у меня возникли проблемы с тем, что кажется признанием глобального масштаба. Точно сказать не могу…
У меня есть заголовочный файл, который включает typedef для структуры конфигурации:
typedef struct {
char idPrefix[8];
char defPass[16];
char targetSSID[32];
char targetPass[64];
uint8_t beepInRange;
uint8_t beepOutofRange;
} devConfig;
Я хочу назначить переменную конфигурации в моем файле ino:
devConfig myConfig;
но когда я пытаюсь получить доступ к нему в моей настройке или цикле, например:
void setup() {
strncpy(myConfig.defPass, "somepass", 16);
}
Это выплевывает «ошибка:« myConfig »не был объявлен в этой области» когда я пытаюсь запустить платформу
Разве эта штука не поддерживает глобальные переменные так же, как Arduino? Что я делаю неправильно? Любая помощь приветствуется.
Я думаю, что вы, должно быть, забыли добавить #include "Arduino.h"
Заголовочный файл в основном коде. Также обратите внимание, что Platform IO компилирует файлы cpp, а не ino-файл.
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;
Других решений пока нет …