我一直在寻找其他开发平台,用于处理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那样支持全局变量吗?我究竟做错了什么?任何帮助表示赞赏。
答案 0 :(得分:1)
我认为您必须忘记在主代码中添加#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;