我的MQTT操作类(M2Mqtt.Net)

类本体
4.3.0

public   class MQTTMain{public   MqttClient mqttClient =null ; public   bool MQTTMainConnect(string MenZuNo, string ServerIP, int ServerPort, string UserName, string Pwd){try{string EMQX_CLIENT_ID = $"称重端-{MenZuNo}-{OPCommon.PCControl.GetPCInfos.GetMachineName()}";mqttClient = new MqttClient(ServerIP, ServerPort, false, null, null, MqttSslProtocols.None);mqttClient.Connect(EMQX_CLIENT_ID, UserName, Pwd);//需要录入账号密码return true; }catch (Exception ex){OPCommon.LogWrite.WriteLog("MQTT链接错误,信息是:"+ex.Message);return false;} }/// <summary>/// 发布主题/// </summary>/// <param name="MenZuNo"></param>/// <param name="ServerIP"></param>/// <param name="ServerPort"></param>/// <param name="UserName"></param>/// <param name="Pwd"></param>/// <returns></returns>public   bool MQTTMainPublish(string Zhuti, string MsgInfo ){try{mqttClient.Publish(Zhuti, System.Text.Encoding.UTF8.GetBytes(MsgInfo), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);return true;}catch (Exception ex){OPCommon.LogWrite.WriteLog("MQTT发送错误,信息是:" + ex.Message);return false;}}

连接的应用

 /// <summary>/// MQTT链接重新连接/// </summary>public void ThisMQTTConntect(){if (ThisMQTTS.mqttClient == null || !ThisMQTTS.mqttClient.IsConnected){ThisMQTTS.MQTTMainConnect(GModel.MainSetupAll.BangNo, GModel.MainSetupAll.ServerIp, GModel.MainSetupAll.ServerPort, GModel.MainSetupAll.ServerUser, GModel.MainSetupAll.Pwd);}if (ThisMQTTS.mqttClient != null && ThisMQTTS.mqttClient.IsConnected){ThisMQTTS.mqttClient.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;ThisMQTTS.mqttClient.ConnectionClosed += TryReconnectAsync;ThisMQTTS.mqttClient.Subscribe(new string[] { GModel.DingyueZhuti }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });//订阅主题}}

断开重连:

 private void TryReconnectAsync(object sender, EventArgs ex){if (!ThisMQTTS.mqttClient.IsConnected && !IsThisClose){OPCommon.LogWrite.WriteLog($"{this.Name}当前断开");Thread.Sleep(2000);Thread retryThread = new Thread(new ThreadStart(delegate{OPCommon.LogWrite.WriteLog($"{this.Name}第一次重连");ThisMQTTConntect();if (!ThisMQTTS.mqttClient.IsConnected){OPCommon.LogWrite.WriteLog($"{this.Name}第二次重连!");Thread.Sleep(5000);ThisMQTTConntect();}else{OPCommon.LogWrite.WriteLog($"{this.Name}第一次重连成功!");}}));retryThread.Start();} } 

MQTT数据接受

/// <summary>///  MQTT操作/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){//string topic = e.Topic.ToString();//主题内容string MsgFromMQTT = System.Text.Encoding.UTF8.GetString(e.Message);//数据内容}

发送数据

 if (ThisMQTTS.mqttClient != null && ThisMQTTS.mqttClient.IsConnected){ThisMQTTS.MQTTMainPublish(GModel.DingyueZhuti, SetToServer);OPCommon.LogWrite.WriteLog("数据发送成功:" + SetToServer);ChengzhongMainWath.Restart();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

http 403

一、什么是HTTP ERROR 403 403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站&#xff0c;服务器受到请求但拒绝提供服务。 二、HTTP 403 状态码解释大全 403.1 -执行访问禁止。 403.2 -读访问禁止。 403.3 -写访问禁止。 403.4要…

gdb调试常用命令

基本命令 1&#xff09;进入GDB  #gdb test test是要调试的程序&#xff0c;由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 2&#xff09;查看源码  (gdb) l 源码会进行行号提示。 如果需要查看在其他文件中定义的函数&#xff0c;在l后加上函数名即可定位到这…

前端Vue 页面滑动监听 拿到滑动的坐标值

前言 前端Vue 页面滑动监听 拿到滑动的坐标值 实现 Vue2写法 mounted() {// 监听页面滚动事件window.addEventListener("scroll", this.scrolling);}, methods: { scrolling() {// 滚动条距文档顶部的距离let scrollTop window.pageYOffset ||document.documentE…

vue、react数据绑定的区别?

Vue 和 React 是两个流行的前端框架&#xff0c;它们在数据绑定方面有一些区别。 Vue 的数据绑定&#xff1a; Vue 使用双向数据绑定&#xff08;two-way data binding&#xff09;的概念。这意味着当数据发生变化时&#xff0c;视图会自动更新&#xff1b;同时&#xff0c;当…

如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

Redis系列-Redis数据类型【3】

目录 Redis系列-Redis数据类型【3】字符串类型&#xff08;String&#xff09;SDS (simple dynamic string) 哈希类型&#xff08;Hash&#xff09;列表类型&#xff08;List&#xff09;集合类型&#xff08;Set&#xff09;有序集合类型&#xff08;ZSet&#xff09;字符串类…

【JavaEE】HTTP协议(什么是HTTP?、HTTP格式、form表单和ajax构造HTTP)

一、什么是HTTP协议&#xff1f; 1.1 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的 应用层协议 1.2 理解HTTP协议的工作过程 当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就…

单例设计模式

什么是单例&#xff1f; 单例就像我们的任务管理器窗口无论打开几次&#xff0c;桌面上只有一个窗口 所谓单例就是&#xff0c;我们有且只能创建一个对象 怎么实现呢 public class A{//定义一个类变量记住该类的一个对象private static A a new A();//私有构造器 ---这样只能通…

Flex bison 学习好代码

计算机的重要课程编译原理很难学吧&#xff0c; 但是要会用flex &bison的话&#xff0c;容易理解一些。 有些好的项目可以帮助我们&#xff0c;比如 https://github.com/jgarzik/sqlfun 可以帮我们&#xff0c;下载 下来。 在cygwin 下面或者linux 运行&#xff1a; …

es6过滤对象里面指定的不要的值filter过滤

//过滤出需要的值this.dataItemTypeSelectOption response.data.filter(ele > ele.dictValue tree||ele.dictValue float4);//过滤不需要的值this.dataItemTypeSelectOption response.data.filter((item) > {return item.dictValue ! "float4"&&it…

关于表单校验,:rules=“loginRules“

在写好validator相关的方法后&#xff0c;rule测试没有生效 <el-form ref"loginForm" :model"loginForm" :rules"loginRules" class"login-form" <el-form-item prop"username"> <el-input ref"usernam…

C#对图片Image转换为Bitmap并解析图片中的条码

首先&#xff0c;你需要安装ZXing.Net库。你可以通过NuGet包管理器来安装。 using ZXing; using ZXing.Common; using ZXing.QrCode; public class Test {public string DecodeBarcode(Bitmap bitmap) { var reader new BarcodeReader(); var result reader.Decode(b…

基于站点、模式、遥感多源降水数据融合实践技术应用

降水在水循环中发挥着重要作用&#xff0c;塑造了生态景观和生态系统。目前&#xff0c;有四种主要方式获取降水数据&#xff1a;1&#xff09;雨量计观测&#xff0c;2&#xff09;地基雷达遥感&#xff0c;3&#xff09;卫星遥感&#xff0c;4&#xff09;模式模拟。基于雨量…

K8s----资源管理

目录 一、Secret 1、创建 Secret 1.1 用kubectl create secret命令创建Secret 1.2 内容用 base64 编码&#xff0c;创建Secret 2、使用方式 2.1 将 Secret 挂载到 Volume 中&#xff0c;以 Volume 的形式挂载到 Pod 的某个目录下 2.2 将 Secret 导出到环境变量中 二、Co…

LeetCode_多源 BFS_中等_2258.逃离火灾

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一个下标从 0 开始大小为 m x n 的二维整数数组 grid &#xff0c;它表示一个网格图。每个格子为下面 3 个值之一&#xff1a; 0 表示草地。1 表示着火的格子。2 表示一座墙&#xff0c;你跟火都不能通过…

Linux中使用Shell脚本安装jdk

1&#xff0c;了解安装步骤 &#xff08;1&#xff09;进入到server目录 &#xff08;2&#xff09;解压jdk压缩包文件 &#xff08;3&#xff09;配置JAVA_HOME变量、PATH变量、CLASSPATH变量 &#xff08;4&#xff09;要让环境变量立刻生效执行source命令 &#xff08;5&am…

租用网站服务器的六大指标

相信很多人对网站服务器租用6个重要指标都不太了解&#xff0c;下面壹基比小鑫为你详细解释一下这个问题&#xff0c;希望对你有一定的帮助 服务器租用&#xff0c;是指由IDC服务商提供硬件&#xff0c;负责基本软件的安装、环境配置&#xff0c;负责服务器上基本服务功能的正…

邦芒解析:领导暗示你离职的话语和行为

领导暗示你离职的话语和行为&#xff0c;有时候在职场中&#xff0c;如果领导想让你离职的话&#xff0c;一般不会直接和你说&#xff0c;像这种得罪人的事情&#xff0c;他们一般会用暗示的方法。以下是领导暗示你离职的话语和行为 ​ ​1、有你不多&#xff0c;没你不少 这…

你别说,还真好用,Apipost-IDEA插件

写完代码还得重复打字编写接口文档&#xff1f;代码量大定位接口定义方法太难找&#xff1f;麻烦&#xff01;写完代码还得复制粘贴到postman进行调试&#xff1f; 这三点太麻烦&#xff1f;今天给大家推荐一款IDEA插件&#xff0c;写完代码IDEA内一键生成API文档&#xff0c;…

工业物联网模块应用之砂芯库桁架机器人远程无线控制

一、应用背景 在铸管车间无线技改项目中&#xff0c;客户需要构建智能化砂芯库&#xff0c;要求各库存的规格、数量、位置坐标等数据实时可显。此外&#xff0c;还需具备自动入库及出库功能&#xff0c;用于将出炉后的成摞砂芯及时码放至砂芯库的预设位置&#xff0c;当离心机…