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

申请付费网站网页设计与制作实用教程(第3版)

申请付费网站,网页设计与制作实用教程(第3版),网站优化哪家公司好,口碑营销话题目录 1. MQTT是什么#xff1f;2. 开发交互UI3. 服务器核心代码4. 客户端核心代码5. 消息订阅与发布6. 通讯测试7. MQTT与PLC通讯最后. 核心总结 1. MQTT是什么#xff1f; MQTT#xff08;Message Queuing Terlemetry Transport#xff09;消息队列遥测协议#xff1b;是… 目录 1. MQTT是什么2. 开发交互UI3. 服务器核心代码4. 客户端核心代码5. 消息订阅与发布6. 通讯测试7. MQTT与PLC通讯最后. 核心总结 1. MQTT是什么 MQTTMessage Queuing Terlemetry Transport消息队列遥测协议是一种轻量级的发布/订阅消息传输协议专为IOT、低带宽、高延迟的网络环境设计具有高效、低耗、海量设备连接特性。 1.通讯原理 发布Publisher发布消息到特定主题Topic订阅Subscriber订阅主题接收消息代理Broker消息路由管理接收发布的消息颁发给所有订阅者 示例传感器Publisher发送消息到主题Topic代理Broker接收消息并检查该主题的所有客户端订阅者Subscriber实时接收消息 2.消息结构 主题topic负载payload 3.必要条件 MQTT Broker 消息代理服务器客户端库 设备或应用需集成MQTT客户端端口 默认非加密端口 1883加密端口 8883TLS/SSL连接认证 支持用户名/密码、客户端证书等认证方式QoS服务质量/策略 QoS等级描述适用场景0最多一次无确认实时性高允许丢数据1至少一次需确认数据需可靠但不重复2精确一次握手确认关键数据严格不重复 4. 关键特性 遗嘱消息Last Will 设备异常断开时Broker 自动发布预设消息如“设备离线”通知其他客户端。 保留消息Retained Broker 保存主题的最新消息新订阅者首次连接时立即获取。 主题层级Topic Hierarchy 支持多级通配符 单层# 多层例如home/floor1/temperature; home//status匹配所有楼层状态 5.应用场景 移动设备远程监控AGV状态上报跨厂区数据汇聚通过云平台中转 2. 开发交互UI 创建WindowsFormAPP项目NuGet安装MQTTnet开源库项目-属性-框架需与程序包的依赖项一致否则安装错误PM NuGet\Install-Package MQTTnet -Version 2.8.2 控件 label、TextBox、ComboBox、ButtonListViewDock停靠视图Details小ImagelistImagelist1编辑列Infoname、Content 容器 SplitContainerOrienting垂直SplitterWith1BorderStyle边框 组件 Imagelist添加图像timerEnabledtrue、Interval1000 状态 StatusStrip系统时间、连接数量、版本说明 Server端 窗体设置Text标题、Font字体、StartPosition位置、FormBoardStyle边框给定服务IP固定端口号设置开始、停止服务、快捷打开客户端按钮设置日志消息显示窗口设置状态栏 Client端 技巧复制FrmServer修改窗口、Designer代码容器在SP1的Panel2添加SplitContainer2Listview放在SP2的Panel1中设置SP1的FixedPanel的Panel1不动设置SP2的FixedPanel的Panel2不动客户端可发布主题消息设置连接、订阅、取消订阅、发布主题按钮主题信息、给定QoS策略 3. 服务器核心代码 初始化-public FrmServer(){…} 获取IP集合Dns.GetHostAddresses绑定控件cmb_iplist.DataSource、.SelectedIndex 创建服务器对象IMqttServer-服务启动按钮点击事件 创建服务器配置 _ var optionsBuilder new MqttServerOptionsBuilder() – 验证用户密码_ .WithConnectionValidator(c ...实例化服务对象_mqttServer new MqttFactory().CreateMqttServer();创建MQTT事件方法_mqttServer.ClientConnected MqttServer_ClientConnected; – 方法日志显示_this.AddLog(0, MQTT客户端已连接 ClietID: e.ClientId.Length);启动服务_mqttServer.StartAsync(optionsBuilder.Build()); 日志对象 创建委托_public delegate void AddlogDelegate(int index, string info);委托方法_private void AddlogMothod(int index, string info){...}委托对象_private AddlogDelegate AddLog;对象绑定方法 _this.AddLog this.AddlogMothod;对象应用eg:_ this.AddLog(0, MQTT服务端已停止); 状态栏 系统时间_this.tss_time.Text DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss);连接个数连接/断开事件更新_this.tss_connnum.Text mqttServer.GetClientSessionsStatusAsync().Result.Count.ToString(); 其他 停止服务_mqttServer.StopAsync();清空日志_this.lst_info.Items.Clear();打开客户端注意“重新生成解决方案”_new FrmClient().Show();当前时间_DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss);关闭窗体停止服务 4. 客户端核心代码 初始化 获取IP集合Dns.GetHostAddresses绑定控件cmb_iplist.DataSource、.SelectedIndex 快捷打开客户端ServerIP、Port自动填写 创建带参数的初始化构造方法_ public FrmClient(string ip, string port) 创建客户端对象IMqttClient-客户端连接按钮点击事件 创建客户端配置_ var option new MqttClientOptions() { ClientId Guid.NewGuid().ToString(D) };创建通道配置_ option.ChannelOptions new MqttClientTcpOptions()是否启用账户_ if (this.chk_isuserpwd.Checked)创建会话配置_option.CleanSession true;创建客户端对象_mqttClient new MqttFactory().CreateMqttClient();连接服务器_ mqttClient.ConnectAsync(option);绑定事件方法添加日志_ mqttClient.Connected mqttClient_Connected; 日志显示 创建委托方法_与服务端一致创建委托对象_与服务端一致初始化对象绑定方法_与服务端一致对象引用eg_与服务端一致 其他 断开连接_mqttClient.DisconnectAsync(); 5. 消息订阅与发布 客户端可以正确连接后只有订阅与发布消息才算真正进行数据通讯消息的订阅和发布均在客户端进行服务端只需提供一个服务供客户连接桥梁的作用小节解释消息订阅发布的核心代码。 QoS服务策略下拉框获取 QoS服务策略(枚举类型)_this.cmb_qos_pub.DataSource Enum.GetNames(typeof(MqttQualityOfServiceLevel)); 消息订阅 订阅主题_mqttClient.SubscribeAsync(new ListTopicFilter(){...});1 消息取消订阅 取消订阅_mqttClient.UnsubscribeAsync(this.txt_topic_sub.Text); 消息发布 创建消息对象_ var msg new MqttApplicationMessage(){...} 2发布消息_mqttClient.PublishAsync(msg); 6. 通讯测试 7. MQTT与PLC通讯 将msg对象中的Payload更改为PLC的寄存器即可 自动发布 添加定时器timer1_设置频率事件消息内容自动发布连接成功时启动定时器_ this.timer1.Enabled true; 消息内容 添加引用西门子通讯库创建PLC对象读取PLC变量添加到msg中的Payload中_Payload Encoding.UTF8.GetBytes(plcmsg), 最后. 核心总结 1. 开发实现 服务端 功能IP/端口配置、启动/停止服务、连接监控初始化 MqttServer 对象处理连接/断开事件日志记录、状态更新 客户端 功能连接/断开、订阅/取消主题、消息发布配置 MqttClientIP、端口、认证实现订阅 (SubscribeAsync) /发布 (PublishAsync) 2. 进阶应用 PLC 集成 自动发布定时器读取 PLC 数据并推送数据格式Payload 封装寄存器值如 Siemens PLC 数据 异常测试 基础测试服务端启停、客户端连接/断开消息流验证订阅发布功能、QoS 策略生效异常测试网络断开重连、遗嘱消息触发 附关键代码片段 服务端启动 var options new MqttServerOptionsBuilder().WithDefaultPort(1883).Build(); mqttServer new MqttFactory().CreateMqttServer(); mqttServer.StartAsync(options);客户端发布消息 var msg new MqttApplicationMessage {Topic sensor/temp,Payload Encoding.UTF8.GetBytes(25℃),QoS MqttQualityOfServiceLevel.AtLeastOnce }; client.PublishAsync(msg);PLC 数据读取 var plcValue SiemensPLC.Read(DB1.DBD0); // 读取浮点数 var payload ${{\temperature\: {plcValue}}};源码链接 创建TopicFilter对象_new TopicFilter(this.txt_topic_sub.Text (MqttQualityOfServiceLevel)Enum.Parse(typeof(MqttQualityOfServiceLevel),this.cmb_qos_sub.Text)) ↩︎ 消息对象赋值_ Topic this.txt_topic_pub.Text, QualityOfServiceLevel (MqttQualityOfServiceLevel)Enum.Parse(typeof(MqttQualityOfServiceLevel), this.cmb_qos_pub.Text), Payload Encoding.UTF8.GetBytes(this.txt_msg_pub.Text), Retain false, ↩︎
http://www.hkea.cn/news/14374269/

相关文章:

  • 广州网站建设好公司手机怎么建网站
  • 三明城乡建设网站软件设计流程图
  • 怎么看网站pvwordpress移动端代码
  • 关于网站推广wordpress 建站教程 .pdf
  • 网站后台构建wordpress footer 插件
  • 抽奖网站建设做网站练手项目
  • 带动画的网站模板网站横幅广告代码
  • 毕业设计餐饮网站建设网站的搭建流程
  • 建设监理工程公司网站钢结构网站
  • 做爰网站视屏做化妆品注册和注册的网站吗
  • 搜索引擎网站推广可以自己做吗徐州城乡建设招投标网站
  • 免费做网站可以一直用吗怎么破解网站后台
  • 网站备案为什么 没有批复文件WordPress清爽主题
  • wordpress企业站模板罗湖住房和建设局网站
  • 滦平住房和城乡建设厅网站网站建设维护公司资质
  • 西安做网站的公司在线图片制作工具
  • 有网址和关键词就能刷网站排名网络服务设备有哪些
  • 济南网站假设推广网页网站自做全搞定
  • 深圳专业营销网站制作建筑设计公司logo
  • 优秀毕业设计网站设计网络营销具有哪些优势和吸引力
  • 优秀的设计网站有哪些内容珠海网站建设防
  • 成都网站建设桔子科技html5软件安装视频
  • 江西建设职业技术学院招生信息网站wordpress图片无法显示
  • asp.net 网站发布乱码问题wordpress开发+文档下载
  • wordpress给公司建站wordpress 专栏页面
  • 绵阳网站建设策划内容wordpress ftp wp-config.php
  • 电子商务网站建设与运营方向上海网站建设百度推广公司哪家好
  • 厦门人才网个人登录国内好的seo
  • 中山h5网站建设如何利用模板做网站
  • 做银行流水网站ps做特效哪个网站好