HiveMq-API示例

项目用到了HIVEMQ连接IOT设备,一开始使用了 spring-integration-mqtt,后来逛了逛HiveMq的官网发现他们有自己的SDK,所以记录一下。

Maven坐标:

        <dependency>
            <groupId>com.hivemq</groupId>
            <artifactId>hivemq-mqtt-client</artifactId>
            <version>1.2.1</version>
        </dependency>

异步代码示例: 

package com.hive.mqtt.example;

import com.hivemq.client.mqtt.datatypes.MqttQos;
import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient;
import com.hivemq.client.mqtt.mqtt3.Mqtt3Client;
import com.hivemq.client.mqtt.mqtt3.message.publish.Mqtt3Publish;

import java.util.UUID;
import java.util.function.Consumer;

import static javax.xml.bind.DatatypeConverter.printHexBinary;

/**
 * @author qingtaiJiang
 * @date 2020/10/10 15:06
 */
public class MqttExample {

    public static void main(final String[] args) {

        //回调函数
        Consumer<Mqtt3Publish> consumer = new Consumer<Mqtt3Publish>() {
            @Override
            public void accept(Mqtt3Publish mqtt3Publish) {
                System.out.println("getPayload:" + mqtt3Publish.getPayload());
                System.out.println("qos:" + mqtt3Publish.getQos());
                System.out.println("extend:" + mqtt3Publish.extend());
                System.out.println("AsBytes:" + printHexBinary(mqtt3Publish.getPayloadAsBytes()));
                System.out.println("getTopic:" + mqtt3Publish.getTopic());
                System.out.println("getType:" + mqtt3Publish.getType());
                System.out.println("isRetain:" + mqtt3Publish.isRetain());
            }
        };

        //和Mqtt服务建立连接
        final Mqtt3AsyncClient client = Mqtt3Client.builder()
                .identifier(UUID.randomUUID().toString())
                .serverHost("zrcentos03")
                .buildAsync();
        client.connect().thenAccept(connAck -> System.out.println("connected:" + connAck));

        //订阅主题
        client.toAsync().subscribeWith()
                .topicFilter("/test/aa") //指定订阅主题
                .qos(MqttQos.AT_LEAST_ONCE) //指定订阅质量
                .callback(consumer)  //接收到订阅消息后的处理函数
                .send();

        //订阅主题
        client.toAsync().subscribeWith()
                .topicFilter("/test/bb")
                .qos(MqttQos.AT_LEAST_ONCE)
                .callback(consumer)
                .send();

        //取消订阅
        client.toAsync().unsubscribeWith()
                .topicFilter("/test/bb")
                .send();


        while (true) {
            System.out.println("");
            //发布消息
            client.toAsync().publishWith()
                    .topic("/test/aa")
                    .payload("1".getBytes())
                    .qos(MqttQos.EXACTLY_ONCE)
                    .send();
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android-serialport-api示例是一个基于Android系统的串口通信API的演示,旨在帮助开发者了解和学习如何在Android设备上使用串口。 使用示例API之前,需要先确保设备已经具备串口功能,可以通过OTG线连接串口设备或者在开发板上直接使用串口。 示例中提供了一些基本的串口通信功能,开发者可以根据自己的需求进行扩展和修改。例如,示例中可以通过设置串口名称、波特率、数据位、停止位和校验位来打开串口,也可以通过串口发送和接收数据。 该示例API主要包含以下几个类和方法: 1. SerialPort类:该类用于打开和关闭串口,通过设置串口名称和波特率等参数,可以实现对串口的控制。 2. SerialPortFinder类:该类用于查找设备上的串口列表,可以获取串口设备名称、文件描述符等信息。 3. SerialPortFinder类中的getDrivers方法:该方法用于获取设备上的串口列表。 4. SerialPortFinder类中的getAllDevicesPath方法:该方法用于获取设备上所有串口设备的路径。 5. SerialPort类中的onDataReceived方法:该方法用于接收串口数据,开发者可以根据自己的需求进行处理。 通过这些类和方法,开发者可以实现将Android设备与外部设备通过串口进行通信,实现一些特定的功能,如串口设备的数据读取和写入。 需要注意的是,使用示例API需要在AndroidManifest.xml文件中添加相关权限,如访问串口设备的权限等。 总的来说,android-serialport-api示例提供了一套在Android设备上进行串口通信的API,方便开发者学习和实践串口通信的相关知识。 ### 回答2: android-serialport-api是一个用于在Android设备上进行串口通信的开源库。该库提供了一些示例,可以帮助开发者了解如何使用它。 首先,这些示例中包含了一些基本的功能,比如打开和关闭串口、读取和写入数据等。开发者可以通过这些示例学习如何在自己的应用程序中使用这些功能。 此外,示例还演示了如何设置串口的一些参数,例如波特率、数据位、停止位和校验位等。这对于与外部设备进行通信时非常重要,因为不同的设备可能需要不同的参数设置。 示例还展示了如何使用线程来处理串口通信,以避免阻塞用户界面。这是很重要的,因为串口通信可能需要一些时间,如果在主线程中进行,会导致应用程序无响应。 另外,示例还介绍了一些高级功能,如如何处理异常情况、如何监听串口数据的变化等。这些功能可以帮助开发者更好地处理各种情况,确保串口通信的可靠性和稳定性。 总之,android-serialport-api示例提供了一个很好的学习资源,可以帮助开发者快速上手并了解如何在Android设备上进行串口通信。通过这些示例,开发者可以更好地理解该库的使用方法,并在自己的应用程序中实现所需的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值