当前位置: 首页 > news >正文

我的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.lryc.cn/news/225131.html

相关文章:

  • node插件MongoDB(四)—— 库mongoose 的个性话读取(字段筛选、数据排序、数据截取)(四)
  • AI:73-结合语法知识的神经机器翻译研究
  • [LeetCode]-225. 用队列实现栈
  • Kafka Rebanlace次数过高问题
  • 计算机是如何进行工作的+进程和线程
  • MySQL(11):数据处理之增删改
  • QT QDockWidget
  • Android 12.0 开启蓝牙状态栏即显示蓝牙图标
  • skynet学习笔记02— skynet介绍、skynet基础API与环境变量
  • Android---App 崩溃
  • DocTemplateTool - 可根据模板生成word或pdf文件的工具
  • Python+reuqests自动化接口测试
  • 【Java 进阶篇】保护你的应用:Java 过滤器实现敏感词汇过滤
  • 目标检测网络系列——YOLO V4
  • 如何在Linux上部署1Panel运维管理面板并远程访问内网进行操作
  • CentOS系统安装vsftpd
  • 手握“发展密钥”,TCL科技或迎价值重估?
  • A star算法
  • node插件MongoDB(四)—— 库mongoose 操作文档使用(新增、删除、更新、查看文档)(二)
  • JavaFX入门和网格布局面板的使用,Dao层交互,舞台与场景切换以及其他控件的使用
  • 数据中台之数据分析
  • 龙芯loongarch64服务器编译安装scipy
  • ubuntu(18.04)中安装open babel docker镜像并在php项目中调用容器中的obabel命令解析结果使用
  • 02-PostgreSQL的基本使用
  • uniapp 实现路线规划
  • C语言C位出道心法(五):内存管理
  • Flink之SQL客户端与DDL操作
  • 记录第一次银行测试岗面试【总结几点面试不要犯得错误】
  • 一篇带你精通php
  • Go 语言函数