Blinker两个滑块无法控制-Arduino中文社区 - Powered by Discuz! Archiver

devcro 发表于 2022-4-18 17:38

Blinker两个滑块无法控制

请问Blinker里添加两个滑块,改变一个另一个滑块也会被执行,无关代码已被删除,请教问题出在哪里
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#include <Blinker.h>
//定义KEY和WiFi信息
//----------------------------------------------
char auth[] = "*********";
char ssid[] = "********";
char pswd[] = "*********";
//----------------------------------------------

//新建组件对象
BlinkerSlider SliderA("setCurrent");
BlinkerSlider SliderV("setVoltage");
//电压设定滑块
void sliderV_callback(int32_t value)
{
Serial.println("V被运行");
}
//电流设定滑块
void sliderA_callback(int32_t value)
{
Serial.println("A被运行");
}
//初始化
void setup()
{
Serial.begin(115200);
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
Blinker.begin(auth, ssid, pswd);
BLINKER_DEBUG.stream(BLINKER_PRINT);
BLINKER_DEBUG.debugAll();
SliderA.attach(sliderA_callback);
SliderV.attach(sliderV_callback);
}
void loop()
{
Blinker.run();
}


奈何col 发表于 2022-4-18 18:51

https://www.arduino.cn/thread-84332-1-1.html

devcro 发表于 2022-4-18 19:07

奈何col 发表于 2022-4-18 18:51
https://www.arduino.cn/thread-84332-1-1.html

下面是点击上面滑块(setVoltage)的详细日志,请帮忙看一下,两个滑块里都只放了一个打印输出,
19:03:55.638 -> fromDevice: a46ca8b1a53e11ec810c5254
19:03:55.638 -> Authority uuid
19:03:55.672 -> available: 1
19:03:55.672 -> checkAvail: 1
19:03:55.672 -> parse data: {"setVoltage":9}
19:03:55.672 -> defined BLINKER_ARDUINOJSON
19:03:55.672 -> autoManager begin: 0 0
19:03:55.672 -> data_rtKeyCount: 0
19:03:55.672 -> setSwitch isParsed
19:03:55.706 -> checkNum count: 2
19:03:55.706 -> intWidgetsParse isParsed
19:03:55.706 -> A被运行
19:03:55.706 -> checkNum count: 2
19:03:55.706 -> intWidgetsParse isParsed
19:03:55.706 -> V被运行
19:03:55.706 -> _fresh need flush
19:03:55.706 -> isParsed
19:03:55.706 -> flush
19:03:58.009 -> Got: {"fromDevice":"a46ca8b1a53e11ec810c5254","data":{"rt":["voltage","current","power","temperature"]}}
19:03:58.009 -> data: {"rt":["voltage","current","power","temperature"]}
19:03:58.009 -> fromDevice: a46ca8b1a53e11ec810c5254
19:03:58.009 -> Authority uuid
19:03:58.043 -> available: 1
19:03:58.043 -> checkAvail: 1
19:03:58.043 -> parse data: {"rt":["voltage","current","power","temperature"]}
19:03:58.043 -> defined BLINKER_ARDUINOJSON
19:03:58.043 -> autoManager begin: 0 0
19:03:58.043 -> containsKey rt
19:03:58.043 -> ===>rt get_key: voltage
19:03:58.043 -> ===>rt get_key: current
19:03:58.043 -> ===>rt get_key: power
19:03:58.043 -> ===>rt get_key: temperature
19:03:58.076 -> data_rtKeyCount: 4
19:03:58.076 -> ========data_rtRun
19:03:58.076 -> checkNum count: 2
19:03:58.076 -> checkNum count: 2
19:03:58.076 -> _fresh need flush
19:03:58.076 -> isParsed
19:03:58.076 -> flush

奈何col 发表于 2022-4-18 23:10

开发板型号
lib版本
package版本
提供下

devcro 发表于 2022-4-18 23:19

奈何col 发表于 2022-4-18 23:10
开发板型号
lib版本
package版本


开发板:合宙一款核心板,芯片是乐鑫ESP32C3,附图最后
lib版本:blinker-library-0.3.9点灯官网连接下载
package版本:32_package_2.0.2_arduinocn点灯官网连接下载

奈何col 发表于 2022-4-19 18:38

可能是bug,待我们确认修复

devcro 发表于 2022-4-19 18:40

奈何col 发表于 2022-4-19 18:38
可能是bug,待我们确认修复

好的,多谢

devcro 发表于 2022-4-19 22:45

奈何col 发表于 2022-4-19 18:38
可能是bug,待我们确认修复

又对slider进行测试,结果如下,可供参考

BlinkerSlider SliderA("setVoltage");callback里如果被执行打印:A被执行
BlinkerSlider SliderV("setCurrent");callback里如果被执行打印:V被执行
Blinker.attachData(dataRead);      dataRead里如果被执行打印:BUG
运行测试

测试一
滑块1组件名称(APP): setVoltage 点击执行结果:V被执行,A被执行//异常
滑块2组件名称(APP): setCurrent 点击执行结果:V被执行,A被执行//异常
测试二
滑块1组件名称(APP): setVoltage1 点击执行结果:V被执行//正常
滑块2组件名称(APP): setCurrent1 点击执行结果:A被执行//正常
测试三
滑块1组件名称(APP): setVoltage123 点击执行结果:V被执行//正常
滑块2组件名称(APP): setCurrent456 点击执行结果:A被执行//正常
测试四
滑块1组件名称(APP): setVol 点击执行结果:V被执行//正常
滑块2组件名称(APP): setCur 点击执行结果:A被执行//正常
测试五
滑块1组件名称(APP): setV 点击执行结果:V被执行//正常
滑块2组件名称(APP): setC 点击执行结果:A被执行//正常
测试六
滑块1组件名称(APP): set1 点击执行结果:V被执行,A被执行//异常
滑块2组件名称(APP): set2 点击执行结果:V被执行,A被执行//异常
滑块1组件名称(APP): stotg (抽取组件名称字符)点击执行结果:V被执行,A被执行//异常
滑块2组件名称(APP): stret (抽取组件名称字符)点击执行结果:V被执行,A被执行//异常

初步结论:
APP端slider组件名不能跟BlinkerSlider SliderA("setVoltage");里一样,否则执行两个
APP端slider组件名只要有部分字符与BlinkerSlider SliderA("setVoltage");里一样,就会执行两个
未绑定的slider组件被触发,不会被Blinker.attachData(dataRead); 捕捉,反而被错误解析去执行callback里语句

日志太多无法一一列出,日志里从app端返回的slider组件名及变量是正确的,感觉是lib组件没有正常解析组件名
测试过button组件,功能正常


奈何col 发表于 2022-4-20 00:44

该问题是由于老版本arduinoJSON不支持esp32c3导致,上月已修复。
您可以使用我们开发中的版本 blinker-iot/blinker-library at dev_3.0 (github.com)


devcro 发表于 2022-4-20 20:52

奈何col 发表于 2022-4-20 00:44
该问题是由于老版本arduinoJSON不支持esp32c3导致,上月已修复。
您可以使用我们开发中的版本 blinker-iot/ ...

多谢,新库文件已正常.新问题我会在bug区提交

页: [1]
查看完整版本: Blinker两个滑块无法控制