使用M2Mqtt 接受以及发布MQTT消息
在NuGet库里面直接查找M2Mqtt就可以安装库。
使用framework4.5.2
1.配置文件操作
public static class GModel{public static BassSetup MainSetup { get; set; }public static void GetThisAdd(){MainSetup = new BassSetup();string IPAdd = ConfigurationManager.AppSettings["IPAdd"];string ServerPort = ConfigurationManager.AppSettings["ServerPort"];string UserName = ConfigurationManager.AppSettings["UserName"];string Pwd = ConfigurationManager.AppSettings["Pwd"];MainSetup.IPAdd = IPAdd ;MainSetup.ServerPort =int.Parse(ServerPort);MainSetup.UserName = UserName;MainSetup.Pwd = Pwd;}}
2连接服务器:
/// <summary>/// 连接服务/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button4_Click(object sender, EventArgs e){string EMQX_CLIENT_ID = Guid.NewGuid().ToString();mqttClient = new MqttClient(GModel.MainSetup.IPAdd, GModel.MainSetup.ServerPort, false, null, null, MqttSslProtocols.None); //mqttClient = new MqttClient("http://192.168.0.197:61613");此方法不妥mqttClient.Connect(EMQX_CLIENT_ID,GModel.MainSetup.UserName,GModel.MainSetup.Pwd);//需要录入账号密码mqttClient.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;//订阅后的动作//mqttClient.Subscribe(new string[] { "123123124124512" }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });BTConnect.BackColor = Color.Green;}
3.订阅后的事件
//这段定义了收到消息之后做什么事情private void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){string topic = e.Topic.ToString();string message = System.Text.Encoding.Default.GetString(e.Message);//同时订阅两个或者以上主题时,分类收集收到的信息//reciveTopic.Text = topic;//reciveMessagetxt.Text = message;}
4.订阅主题
/// <summary>/// 订阅/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){if (mqttClient != null && !string.IsNullOrEmpty(TBZhuti.Text) ){mqttClient.Subscribe(new string[] { TBZhuti.Text}, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });//一次订阅多个主题似乎会出错}else{MessageBox.Show("请先连接服务器,并且确认订阅主题有数据。",this.Text,MessageBoxButtons.OK,MessageBoxIcon.Information);}}
5.发布主题。
/// <summary>/// 发布/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){if (mqttClient != null && !string.IsNullOrEmpty(TBZhuti.Text) && !string.IsNullOrEmpty(RTBContent.Text)){mqttClient.Publish(TBZhuti.Text, System.Text.Encoding.UTF8.GetBytes(RTBContent.Text), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);}}
6,解除订阅
/// <summary>/// 解除订阅/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button3_Click(object sender, EventArgs e){mqttClient.Unsubscribe(new string[] { "AAAAAA242" });}
7.断开服务器连接
/// <summary>/// 断开连接/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void DisConnect_Click(object sender, EventArgs e){mqttClient.Disconnect();}
https://github.com/eclipse/paho.mqtt.m2mqtt
相关文章:
使用M2Mqtt 接受以及发布MQTT消息
在NuGet库里面直接查找M2Mqtt就可以安装库。 使用framework4.5.2 1.配置文件操作 public static class GModel{public static BassSetup MainSetup { get; set; }public static void GetThisAdd(){MainSetup new BassSetup();string IPAdd ConfigurationManager.AppSettings…...
【SA8295P 源码分析】33 - Android GVM USB 透传配置
【SA8295P 源码分析】33 - Android GVM USB 透传配置 1. QNX 侧配置 USB1 为 GVM 使用2. Android 端配置 dts:以配置 USB1 为例3. QNX 端配置 linux-la.config:以配置 USB1 为例4. 在Android shell 中配置USB0 / USB1 的 Host/device 模式切换系列文章汇总见:《【SA8295P 源…...
华为OD机试 - 过滤组合字符串 - 深度优先搜索dfs算法(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…...
【Unity自制手册】游戏基础API大全
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
【LVS】4、HAProxy搭建web集群
目前常见的Web集群调度器分为软件和硬件 软件通常使用开源的LVS、Haproxy、Nginx LVS性能最好(基于内核转发),但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性…...
【应用层】网络基础 -- HTTP协议
再谈协议HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见HeaderHTTP周边会话保持 再谈协议 协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的&am…...
【线性DP】模型总结(terse版)
【线性DP】模型总结 最长上升子序列 DP法 dp[i]表示以i结尾的最长上升子序列的长度。 对于每个i,遍历j1~i-1,若a[j] < a[i], 则dp[i] max(dp[i], dp[j] 1); 二分法 可以优化时间复杂度。 dp[]数组用来存储当前最长上升子序列。 若dp[]数…...
conda 常用命令
conda 常用命令 一、创建环境二、删除环境三、环境重命名四 、查看环境列表五、进入某个虚拟环境六、退出当前环境七、查看当前虚拟环境下的所有安装包八、安装或卸载包(进入虚拟环境之后)九、分享虚拟环境十、源服务器管理十一、升级十二、卸载十三、卸载十四、pip…...
前端面试:【异步编程】Callback、Promise和Async/Await
嗨,亲爱的JavaScript探险家!在JavaScript开发的旅程中,你会经常遇到异步编程的需求。为了处理异步操作,JavaScript提供了多种机制,包括Callbacks、Promises和Async/Await。本文将深入介绍这些机制,让你能够…...
大数据(四):Pandas的基础应用详解
专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教…...
计算机网络第3章(数据链路层)
计算机网络第3章(数据链路层) 3.1 数据链路层概述3.1.1 概述3.1.2 数据链路层使用的信道3.1.3 三个重要问题 3.2 封装成帧3.2.1 介绍3.2.2 透明传输3.2.3 总结 3.3 差错检测3.3.1 介绍3.3.2 奇偶校验3.3.3 循环冗余校验CRC(Cyclic Redundancy Check)3.3.…...
stm32之4.时钟体系
3.时钟体系(给单片机提供一个非常稳定的频率信号) ①可以使用三种不同的时钟源来驱动系统时钟(SYSCLK),CPU运行的频率为168MHZ; HSI(RC振荡器时钟,也就是高速内部时钟,一般来说很少用,因为精度…...
RPC和HTTP协议
RPC 全称(Remote Procedure Call),它是一种针对跨进程或者跨网络节点的应用之间的远程过程调用协议。 它的核心目标是,让开发人员在进行远程方法调用的时候,就像调用本地方法一样,不需要额外为了完成这个交…...
BUGFix:onnx -> TensorRT转换过程失败
先附上相关的onnx2trt的部分代码: def onnx2trt(onnx_path):logger trt.Logger(trt.Logger.ERROR)builder trt.Builder(logger)network builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))parser trt.OnnxParser(netw…...
FFMPEG小白常用命令行
序列帧转H264视频 ffmpeg -r 60 -f image2 -s 1920x1080 -i fram%d.jpg -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4 -vcodec h264 .\ffmpeg -r 60 -f image2 -s 1920x1080 -i %04d.jpeg -vcodec h264 test.mp4 %04d 表示用零来填充直到长度为4,i.e 000…...
个性定制还是纯粹简约:探寻界面选择背后的心理宇宙
在数码世界中,我们的界面选择成为了一张架起的桥梁,连接着个性的渴望与效率的追求。当我们面对个性化定制界面和极简版原装界面,我们仿佛站在了一座分岔路口,左右各有一片令人心驰神往的风景。究竟是走向五光十色的个性世界&#…...
【Java 高阶】一文精通 Spring MVC - 转发重定向(四)
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
嵌入式Linux开发实操(十):ADC接口开发
#前言 ADC就是模数转换,可以用来接一些模拟量设备,所谓模拟量就是波形不是方波而是各种包络形状的波形的信号,比如电压、电流等电信号或压力、温度、湿度、位移、声音等非电信号,ADC就是将这些信号转换为数字方波信号,以便于信息传递的。 #ADC硬件设计 key按键连接了AD…...
精进语言模型:探索LLM Training微调与奖励模型技术的新途径
大语言模型训练(LLM Training) LLMs Trainer 是一个旨在帮助人们从零开始训练大模型的仓库,该仓库最早参考自 Open-Llama,并在其基础上进行扩充。 有关 LLM 训练流程的更多细节可以参考 【LLM】从零开始训练大模型。 使用仓库之…...
数据采集:selenium 提取 Cookie 自动登陆
写在前面 工作需要,简单整理博文内容涉及 通过 selenium 实现自动登陆理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&#x…...
综述篇 | 2015-2024,情绪识别(Emotion Recognition)技术演进与核心论文全景解读
1. 情绪识别技术演进全景图(2015-2024) 十年前,当研究人员试图通过摄像头分析人脸肌肉变化来判断情绪时,准确率还停留在60%左右。如今,结合多模态数据的情绪识别系统在特定场景下已突破90%准确率。这九年间的技术跃迁可…...
传统认为越早进入行业越占优势,编程统计入行时间,行业红利数据,行业成熟期入行风险更低收益更稳。
“入行时间与行业红利期的匹配关系分析” 为主题,给出一套工程化、可教学、可复现的分析示例。一、实际应用场景描述(Business Context)在职业规划、行业研究与人才策略中,普遍存在一种观点:“越早进入一个行业&#x…...
Cursor编辑器配置重置工具:自动化清理与恢复出厂设置
1. 项目概述与核心价值 最近在折腾代码编辑器,特别是像 Cursor 这类深度整合了 AI 能力的 IDE,发现一个挺有意思但容易被忽略的问题: 编辑器配置的“熵增” 。简单来说,就是你用久了之后,各种插件、主题、快捷键、代…...
Audacity音频编辑教程:免费开源音频处理软件的完整使用指南
Audacity音频编辑教程:免费开源音频处理软件的完整使用指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity Audacity是一款功能强大的免费开源音频编辑软件,支持录音、剪辑、混音和音频效果…...
从零到一:深入拆解 I/O 多路复用的前世今生与实战选型
1. 从单线程阻塞到多路复用:I/O模型的进化史 第一次写网络程序时,你可能遇到过这样的场景:服务器在accept()一个客户端连接后,整个程序就像被冻住一样,直到这个客户端发送数据才能继续运行。这就是最原始的阻塞I/O模型…...
ARMv8-A A64指令集:符号扩展与位操作指令详解
1. A64指令集符号扩展与位操作指令概述在ARMv8-A架构的A64指令集中,符号扩展和位操作指令构成了处理器基础运算能力的重要部分。这些指令通过硬件级优化实现了高效的数据类型转换和位级操作,为底层系统编程和性能敏感型应用提供了关键支持。符号扩展指令…...
基于Next.js与Prisma构建宠物社区应用:全栈开发实战解析
1. 项目概述:一个为宠物爱好者打造的社区应用最近在GitHub上闲逛,发现了一个挺有意思的开源项目,叫jtsang4/happypaw。光看名字,“Happy Paw”(快乐的爪子),就能猜到这八成是和宠物相关的。点进…...
【2025最新】基于SpringBoot+Vue的夕阳红公寓管理系统管理系统源码+MyBatis+MySQL
💡实话实说:有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着人口老龄化趋势加剧,养老服务需求日益增长,传统的养老机构管理模式已难以满足高效、智能化的运营需求。夕阳红公寓管理…...
别再手动下载了!用Chocolatey在Windows上一键安装Zookeeper 3.8.0
告别繁琐配置:用Chocolatey在Windows上极速部署Zookeeper 每次在Windows环境下部署Zookeeper,你是否还在重复下载压缩包、配置环境变量、修改配置文件的传统流程?对于追求效率的开发者而言,这种手动操作不仅耗时耗力,还…...
城市道路自动驾驶避障规划与MPC跟踪控制【附仿真】
✨ 长期致力于自动驾驶、路径规划、速度规划、跟踪控制、模型预测控制研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅如需沟通交流,点击《获取方式》 (1)SL图五次多项式代价路径决策与凸…...
