为什么单击开关按键后会调用其他控件的函数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1821|回复: 5

[求助] 为什么单击开关按键后会调用其他控件的函数

[复制链接]
发表于 2020-8-5 22:48 | 显示全部楼层 |阅读模式
本帖最后由 Yuanq 于 2020-8-5 23:40 编辑

BlinkerButton Kelvinator_power("btn-pwr");
BlinkerButton Kelvinator_Light("btn-deng");
BlinkerSlider Slider1("ran-wen");
BlinkerNumber NUM2("settemp");
BlinkerSlider Slider2("ran-fan");
BlinkerNumber NUM1("fan");
BlinkerButton Kelvinator_sxfan("btn-sx");


void setup() {
  Serial.begin(115200);

  Kelvinator_power.attach(Kelvinator_power_callback);
  Kelvinator_Light.attach(Kelvinator_Light_callback);
  Kelvinator_sxfan.attach(Kelvinator_sxfan_callback);
  Slider1.attach(slider1_callback);
  Slider2.attach(slider2_callback);

  delay(200);
  Blinker.begin(auth,ssid,pswd);
}

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

void Kelvinator_power_callback(const String &state)
{
    BLINKER_LOG("get button state: ", state);
    if (state == BLINKER_CMD_ON)
    {
      Serial.println("pwr on");

      Kelvinator_power.print("on");
    }else if (state == BLINKER_CMD_OFF){

      Kelvinator_power.print("off");
    }
}

void Kelvinator_Light_callback(const String &state)
{
    BLINKER_LOG("get button state: ", state);
    if (state == BLINKER_CMD_ON)
    {
      Serial.println("light on");

      Kelvinator_Light.print("on");
    }else if (state == BLINKER_CMD_OFF){
      Serial.println("light off");

      Kelvinator_Light.print("off");
    }
}

void slider1_callback(int32_t value)
{
  BLINKER_LOG("get slider value: ", value);
  Serial.println(value);
}

void slider2_callback(int32_t value)
{
  BLINKER_LOG("get slider value: ", value);
  Serial.println(value);
}

void Kelvinator_sxfan_callback(const String &state)
{
    BLINKER_LOG("get button state: ", state);
    if (state == BLINKER_CMD_ON)
    {       Kelvinator_sxfan.print("on");

      Serial.println("updown on");
    }else if (state == BLINKER_CMD_OFF){
      Serial.println("updown off");

      Kelvinator_sxfan.print("off");
    }
}

所有按键均为开关类型
第一次进入控制界面时,任意点击一个按钮,都只会调用该按钮的函数,之后点击另一个按钮,不但会执行该按钮的函数,还会执行上一个点击过的按钮的函数,再点击第三个按钮,就会三个按钮的函数都执行 QQ图片20200805233345.jpg QQ图片20200805233421.jpg
比如:刚打开界面时,点击第一个按钮,串口打印pwr on,此时点击第二个按钮,串口打印pwr on \n light on,点击第三个按钮打印pwr on \n light on \n updown on
拖动第一个滑动条到19,打印pwr on \n light on \n updown on \n 19,拖动第二个滑动条到3,打印pwr on \n light on \n updown on \n 19 \n 3
再点击一下第一个按钮,打印pwr off \n light on \n updown \n on \n 19 \n 3

发表于 2020-8-5 23:24 | 显示全部楼层
不贴串口数据,谁知道发生什么
 楼主| 发表于 2020-8-5 23:40 | 显示全部楼层
XlinliY.Zhang 发表于 2020-8-5 23:24
不贴串口数据,谁知道发生什么

已更新帖子,再帮忙看看吧
发表于 2020-8-6 01:25 | 显示全部楼层
Yuanq 发表于 2020-8-5 23:40
已更新帖子,再帮忙看看吧

实际测试并不会出现你那种情况,估计是你路由器或者网络问题,导致消息无法实时送达

测试图

测试图
 楼主| 发表于 2020-8-6 01:41 来自手机 | 显示全部楼层
XlinliY.Zhang 发表于 2020-8-6 01:25
实际测试并不会出现你那种情况,估计是你路由器或者网络问题,导致消息无法实时送达
...

刚刚把app从2.4.6升级到2.4.7后好像就好了,不知道是什么原因
发表于 2020-8-6 01:42 | 显示全部楼层
Yuanq 发表于 2020-8-6 01:41
刚刚把app从2.4.6升级到2.4.7后好像就好了,不知道是什么原因

别人都2.7.4了、、、、
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 11:42 , Processed in 0.093856 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表