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

申请付费网站石家庄网站制作费用

申请付费网站,石家庄网站制作费用,个人网站制作网站,阿里云搜索引擎网址目录 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/14372644/

相关文章:

  • 现在用什么做网站个人网站建设实训报告
  • 网站开发服务内容wordpress安装视频
  • 怎么申请网站空间域名it运维发展方向
  • 在线网页设计网站网站建设哪个公司好
  • 英文网站怎么做外贸推广雄安建设网站制作
  • 安徽省建设监理协会新网站网页设计与制作代码成品
  • 职业学校网站模板十大app黄皮软件排行榜
  • 游戏网站开发找什么人可建网站建1设公司
  • 百度宁波运营中心常州百度seo排名
  • 宁夏区建设厅网站网页制作三剑客不包括
  • 怎么制作网站app微网站建设制作
  • wordpress编辑页面图片并排基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 网站建设商家公司微信网页版公众号网站怎么做
  • 温州住房与城乡建设部网站青白江区城乡和建设局网站
  • 电子商务网站策划书2000字石家庄网站改版
  • 做网站图片素材在线编辑如何自己制作小程序
  • 杭州建设工程信息网站青岛app网站开发
  • 长春作网站的那家网上购物平台怎么建立
  • 品牌网站建设毛尖2做的网站在百度找不到
  • 网站建设设计风格如何与色彩搭配如何免费搭建网站
  • 免费教如何php网站建设网站建设部署与发布
  • 威海建设集团网站首页服务器维护教程
  • 网站建设需要多大的服务器xml文件里做网站超链接
  • 网站建设的经验你知道吗 网站
  • 互联网营销与推广seo网站的锚文本怎么写
  • 无锡高端网站建设咨询企业所得税会计分录怎么做
  • 网站备案后应该做什么品牌的网站建设一般多少钱
  • 郑州网站建设moran连接品硕网线做怎么弹网站
  • 北京网站建设+++招聘信息如何将下载好的网站模板用到织梦程序上
  • eclipse 网站开发过程网站配色方案橙色