BLINKER编译出错,cannot declare field 'BlinkerSerialESPMQTT::Transp' to ...-Arduino中文社区 - Powered by Discuz! Archiver

invent 发表于 2019-12-9 15:32

BLINKER编译出错,cannot declare field 'BlinkerSerialESPMQTT::Transp' to ...

本帖最后由 invent 于 2019-12-9 15:35 编辑

基本信息
[*] 这个问题满足提问指南
[*] 我阅读了开发文档
[*] 我使用了最新的库及APP进行测试,但是问题仍然存在
[*] 我搜索过类似问题的解决方法但是仍然无法解决
[*][] 有设备端的LOG信息
[*] 有编译报错信息
[*] 我已填写基本信息
设备信息
[*]硬件:
[*]接入方式:
[*]package版本:
[*]blinker库版本:
[*]开发环境:
[*]操作系统:
IDE 中的设置
ESP8266

[*]Module:
[*]Flash Mode:
[*]Flash Size:
[*]lwip Variant:
[*]Reset Method:
[*]Flash Frequency:
[*]CPU Frequency:
[*]Upload Using:
[*]Upload Speed: (serial upload only)手机信息及APP信息
Arduino UNO
[*]Module: [Arduino UNO]
[*]Flash Mode:
[*]Upload Using:
问题描述:
使用UNO+ESP8266-AT模式测试开发,
ESP8266_AT_Firmware_WIFI固件编译正常,固件下载正常,串口发送AT指令测试8266模块正常;
UNO程序无论使用Arduino IDE 1.8.10或PlatformIO均编译失败,错误提示信息如下:

代码
#define BLINKER_WIFI

#include <Arduino.h>
#include <Blinker.h>

const char auth[] = "xxx";
const char ssid[] = "xxx";
const char pswd[] = "xxx";

BlinkerButton Light("btn_abc");

void Light_callback(const String & state)
{
}

void setup() {
Serial.begin(9600);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd, 2, 3);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
Light.attach(Light_callback);
}

void loop() {
Blinker.run();
}

编译信息

C:\users\invent\.platformio\lib\blinker-library-master\src/BlinkerSerialESPMQTT.h: At global scope:
C:\users\invent\.platformio\lib\blinker-library-master\src/BlinkerSerialESPMQTT.h:154:27: error: cannot declare field 'BlinkerSerialESPMQTT::Transp' to be of abstract type 'BlinkerSerialMQTT'
         BlinkerSerialMQTT Transp;
                           ^
In file included from C:\users\invent\.platformio\lib\blinker-library-master\src/BlinkerSerialESPMQTT.h:4:0,
               from C:\users\invent\.platformio\lib\blinker-library-master\src/Blinker.h:46,
               from src\main.cpp:6:
C:\users\invent\.platformio\lib\blinker-library-master\src/Adapters/BlinkerSerialMQTT.h:26:7: note:   because the following virtual functions are pure within 'BlinkerSerialMQTT':
class BlinkerSerialMQTT : public BlinkerStream

invent 发表于 2019-12-12 08:47

没有人解答么?这是什么社区?

奈何col 发表于 2019-12-12 10:42

invent 发表于 2019-12-12 08:47
没有人解答么?这是什么社区?

1.不太可能有专人等着给您回答问题;
2.按文档操作使用例程不会有编译问题;
3.Blinker.begin(auth, ssid, pswd, 2, 3);没有这种写法,请按文档和例程操作。

invent 发表于 2019-12-12 14:22

本帖最后由 invent 于 2019-12-12 14:23 编辑

奈何col 发表于 2019-12-12 10:42
1.不太可能有专人等着给您回答问题;
2.按文档操作使用例程不会有编译问题;
3.Blinker.begin(auth, ss ...
您好,我确实是按照文档的说明进行操作,比如您说的Blinker.begin(auth, ssid, pswd, 2, 3); 的写法,可以写成Blinker.begin(auth, ssid, pswd);默认情况下就是使用GPIO2,3作为软串口通讯,加入2,3是为了方便记忆;
Blinker.begin(); 函数的使用参考了官方文档ESP_AT模块支持文档,截图如下:

请您指出我的错误之处,谢谢!


coloz 发表于 2019-12-12 22:32

invent 发表于 2019-12-12 14:22
您好,我确实是按照文档的说明进行操作,比如您说的Blinker.begin(auth, ssid, pswd, 2, 3); 的写法,可以 ...

那是8266做AT模块的写法。请看8266直接接入的快速示例
https://diandeng.tech/doc/getting-start-8266

invent 发表于 2019-12-12 23:06

coloz 发表于 2019-12-12 22:32
那是8266做AT模块的写法。请看8266直接接入的快速示例
https://diandeng.tech/doc/getting-start-8266 ...

您好,谢谢您的解答,但是请看我的问题,我就是在尝试使用8266-AT指令开发。


所以并没有解决我遇到的问题。
请再帮我看一下,而且我发现论坛里其他用户也遇到过这个问题,最终都没有很好的解答。




coloz 发表于 2019-12-12 23:26

invent 发表于 2019-12-12 23:06
您好,谢谢您的解答,但是请看我的问题,我就是在尝试使用8266-AT指令开发。



抱歉,因为您说nodemcu,我以为您是用nodemcu。
这个问题已经修复,在dev3.0分支,还未并入master
https://github.com/blinker-iot/blinker-library/tree/dev_3.0

invent 发表于 2019-12-12 23:44

coloz 发表于 2019-12-12 23:26
抱歉,因为您说nodemcu,我以为您是用nodemcu。
这个问题已经修复,在dev3.0分支,还未并入master
https:/ ...

非常感谢!我去试一下。另外问个问题,PlatformIO的Blinker库为什么从1.0.x就不更新了?

奈何col 发表于 2019-12-13 00:36

invent 发表于 2019-12-12 23:44
非常感谢!我去试一下。另外问个问题,PlatformIO的Blinker库为什么从1.0.x就不更新了? ...

我们没有提供过PlatformIO相关支持,可能是其他用户上传的

AFATAR 发表于 2021-8-19 20:32

我之前是编译不通过,更新库后问题就解决了。或许你也可以试试更新库文件。
页: [1]
查看完整版本: BLINKER编译出错,cannot declare field 'BlinkerSerialESPMQTT::Transp' to ...