skilaxi 2023-04-01 11:07 采纳率: 0%
浏览 8

这段MQTT代码怎么不执行呢

这段MQTT代码怎么不执行呢?Log也没有打印,也没有弹窗显示


 handler = new Handler() {
            @SuppressLint("SetTextI18n")
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                switch (msg.what){
                    case 1: //开机校验更新回传
                        break;
                    case 2:  // 反馈回传

                        break;
                    case 3:  //MQTT 收到消息回传   UTF8Buffer msg=new UTF8Buffer(object.toString());
                        Toast.makeText(MainActivity.this,msg.obj.toString() ,Toast.LENGTH_SHORT).show();
                        Log.v("MainActivity","handSwitch1");
                        text_test.setText(msg.obj.toString());
                        break;
                    case 30:  //连接失败
                        Log.v("MainActivity","handSwitch2");
                        Toast.makeText(MainActivity.this,"连接失败" ,Toast.LENGTH_LONG).show();
                        break;
                    case 31:   //连接成功
                        Log.v("MainActivity","handSwitch3");
                        Toast.makeText(MainActivity.this,"连接成功" ,Toast.LENGTH_LONG).show();
                        try {
                            client.subscribe(mqtt_sub_topic,1);
                        } catch (MqttException e) {
                            e.printStackTrace();
                        }
                        break;
                    default:
                        break;
                }
            }
        };
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-01 14:08
    关注
    • 建议你看下这篇博客👉 :转战物联网·基础篇07-深入理解MQTT协议之控制报文(数据包)格式
    • 除此之外, 这篇博客: 物联网通信消息队列客户端-MQTT简介中的 6.1 保留消息 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • RetainedMessagesMQTT中,无论是发布还是订阅都不会有任何触发事件。1个Topic只有唯一的retain消息,Broker会保存每个Topic的最后一条retain消息。发布消息时把retain设置为true,即为保留信息。每个Client订阅Topic后会立即读取到retain消息。如果需要删除retain消息,可以发布一个空的retain消息,因为每个新的retain消息都会覆盖最后一个retain消息。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月1日