仓颉语言实战:MQTT物联网开发

目录

引言

mqtt4cj库的使用

申请仓颉编程语言内测

下载STDX

测试程序

结束语


引言

最近一直在学习仓颉语言,由于我对物联网比较感兴趣,自然想到写一个MQTT的程序,好在找到了mqtt4cj库,今天分享一下学习心得。

mqtt4cj库的使用

mqtt4cj库使用仓颉语言编写的MQTT协议处理库。主要特性包括:

  • 🚀 支持 tcp/tls/ws/wss 方式连接消息服务端
  • 🚀 支持 mqttv3 协议连接消息服务端
  • 🚀 支持 mqtt 主题订阅发布

mqtt4cj是基于仓颉编程语言Canary Version SDK的,不能用现有的公开的仓颉SDK(0.5x版本)编译。该版本点分式版本号为Cangjie 0.60.5。这个版本增强了自定义注解能力,主要是支持声明的范围扩大,基于混合泛型恢复了反射能力,同时将扩展库移到stdx,后续通过stdx库提供能力。

申请仓颉编程语言内测

要使用Canary Version SDK,需要先访问下面的地址申请内侧版本:GitCode - 全球开发者的开源社区,开源代码托管平台​​​​​​

 申请后等几天会收到邮件,表示内测通过了,就可以访问内测版本SDK和STDX。

下载STDX

访问STDX的网站:GitCode - 全球开发者的开源社区,开源代码托管平台,在其中的发行版那里下载并解压软件。

然后设置CANGJIE_STDX_PATH变量指向STDX的目录。 

测试程序

我编写了一个简单的MQTT测试程序,用于访问华为云的IoTDA,并发布一条状态信息。

package iotdatest
import mqtt4cj.mqttv3.*

main(): Int64 {
        let mqttClient: MqttClient = MqttClient("tcp://bde4cbe7aa.st1.iotda-device.cn-north-4.myhuaweicloud.com:1883", 
                    "<yourclientid>", MemoryPersistence())
        let mqttopt : MqttConnectOptions = MqttConnectOptions()
        mqttopt.setPassword("<yourpassword>".toRuneArray())
        mqttopt.setUserName("<yourusername>")
        let connectToken = mqttClient.connect(mqttopt)

        let data: String = """

    {
        "services": [{
            "service_id": "Ledlight",
            "properties": {
                "LED": "ON"
            }
            }
        ]
    }
        """
        mqttClient.publish("$oc/devices/<deviceid>/sys/properties/report", data.toArray(), 0, false)
        sleep(Duration.second * 20)

        mqttClient.disconnect()
        mqttClient.close()
        return 0
}

在控制台可以看到设备在线,并收到消息。

 

结束语

目前仓颉语言仍然在发展中,其生态还不太完善。像这个库必须新版本,而目前公开的版本还用不了这个库。希望仓颉团队能尽快解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值