查看: 270|回复: 5

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

[复制链接]
  • TA的每日心情
    擦汗
    2018-11-25 18:45
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 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

  • TA的每日心情
    无聊
    2020-9-28 00:22
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 2020-8-5 23:24 | 显示全部楼层
    不贴串口数据,谁知道发生什么
  • TA的每日心情
    擦汗
    2018-11-25 18:45
  • 签到天数: 2 天

    [LV.1]初来乍到

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

    已更新帖子,再帮忙看看吧
  • TA的每日心情
    无聊
    2020-9-28 00:22
  • 签到天数: 62 天

    [LV.6]常住居民II

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

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

    测试图

    测试图
  • TA的每日心情
    擦汗
    2018-11-25 18:45
  • 签到天数: 2 天

    [LV.1]初来乍到

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

    刚刚把app从2.4.6升级到2.4.7后好像就好了,不知道是什么原因
  • TA的每日心情
    无聊
    2020-9-28 00:22
  • 签到天数: 62 天

    [LV.6]常住居民II

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

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

    本版积分规则

    热门推荐

    String类型做参数传递时出现问题
    String类型做参数传递时出
    有两个函数,上面这个用来获取数据,然后第70行调用下面的Price_Analyze()来分析数据
    [Arduino物联网开发实战0]开发准备
    [Arduino物联网开发实战0]
    郑重提示:物联网开发,需要你有较好的编程基础,如果你没有编程基础或Arduino开发基
    兩段式水位的程式,要如何寫呢?可以指導一下嗎?
    兩段式水位的程式,要如何
    想請教大大兩段式水位的程式,要如何寫呢?可以指導一下嗎? 兩段式水位 滿水100%時停止
    点灯里面的 定时任务,按指定时间触发 开关 没效果.怎么...
    点灯里面的 定时任务,按
    #define BLINKER_WIFI #include char auth[] = "e9b348c25011"; char ssid[] = "88
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表