臻识车牌识别配制MQTT通讯,解析车号

臻识车牌识别配制MQTT通讯,解析车号在物联网项目中 我们的软件与车牌识别通讯 通常使用 MQTT 通讯更简单 MQTT 配制测试工具 C MqttHelperus MQTTnet using MQTTnet Client using MQTTnet

大家好,欢迎来到IT知识分享网。

在物联网项目中,我们的软件与车牌识别通讯,通常使用MQTT通讯更简单。

臻识车牌识别配制MQTT通讯,解析车号

MQTT配制

臻识车牌识别配制MQTT通讯,解析车号

测试工具

C# MqttHelper

using MQTTnet; using MQTTnet.Client; using MQTTnet.Protocol; using System; using System.Collections.Generic; using YUTU.DAL.Common; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using YUTU.BLL.Global; using System.Threading; namespace YUTU.BLL.Common.ClientMidle { public class MqttHelper { public IMqttClient _mqttClient; string serverIP, serverPort, user, pwd; ​ public MqttHelper(string ipAddr, string port, string userName, string userPwd) { serverIP = ipAddr; serverPort = port; user = userName; pwd = userPwd; } public bool blconntion = false; MqttClientOptions options = null; public Action<string> GetActionSubscribe; public async void ConntionServer() //async { try { LogMessage("serverIP[" + serverIP + "]serverPort[" + serverPort + "]user[" + user + "]pwd[" + pwd + "]"); options = new MqttClientOptions() { ClientId = Guid.NewGuid().ToString("D") }; options.ChannelOptions = new MqttClientTcpOptions() { Server = serverIP, Port = Convert.ToInt32(serverPort) }; options.Credentials = new MqttClientCredentials() { Username = user, Password = pwd }; options.CleanSession = true; options.KeepAlivePeriod = TimeSpan.FromSeconds(100.5); options.KeepAliveSendInterval = TimeSpan.FromSeconds(20000); ​ if (null != _mqttClient) { await _mqttClient.DisconnectAsync();//await _mqttClient = null; } _mqttClient = new MqttFactory().CreateMqttClient(); ​ _mqttClient.ApplicationMessageReceived += (sender, args) => { GetActionSubscribe?.Invoke(Encoding.UTF8.GetString(args.ApplicationMessage.Payload)); //ActionSubscribe?.Invoke(Encoding.UTF8.GetString(args.ApplicationMessage.Payload)); LogMessage(#34;ApplicationMessageReceived--ClientID:{args.ClientId} | TOPIC:{args.ApplicationMessage.Topic} | Payload:{Encoding.UTF8.GetString(args.ApplicationMessage.Payload)} | QoS:{args.ApplicationMessage.QualityOfServiceLevel} | Retain:{args.ApplicationMessage.Retain}"); ​ }; ​ _mqttClient.Connected += (sender, args) => { LogMessage(#34;Connected--Client is Connected: IsSessionPresent:{args.IsSessionPresent}"); }; ​ _mqttClient.Disconnected += (sender, args) => { LogMessage(#34;Client is DisConnected ClientWasConnected:{args.ClientWasConnected}"); }; ​ await _mqttClient.ConnectAsync(options);//await } catch (Exception ex) { LogMessage("ConntionServer异常:" + ex.Message); } } ​ public async void DisConntionServer() { try { LogMessage("开始执行DisConntionServer"); if (null != _mqttClient && _mqttClient.IsConnected) { await _mqttClient.DisconnectAsync(); _mqttClient.Dispose(); _mqttClient = null; } LogMessage("执行DisConntionServer成功..."); } catch (Exception ex) { LogMessage("DisConntionServer异常:" + ex.Message); } } ​ public async void HeartConntionServer() { try { LogMessage("开始执行HeartConntionServer"); if (null != _mqttClient && options != null) { await _mqttClient.ConnectAsync(options); } LogMessage("执行HeartConntionServer成功..."); } catch (Exception ex) { LogMessage("HeartConntionServer异常:" + ex.Message); } } ​ public void SendMessage(string Topic, string Payload) { try { LogMessage("SendMessage---Topic[" + Topic + "]Payload[" + Payload + "]"); Task.Factory.StartNew(async () => { var msg = new MqttApplicationMessage() { Topic = Topic, Payload = Encoding.UTF8.GetBytes(Payload), ​ QualityOfServiceLevel = (MqttQualityOfServiceLevel) Enum.Parse(typeof(MqttQualityOfServiceLevel), "1"),//Level Retain = false }; ​ if (null != _mqttClient) { await _mqttClient.PublishAsync(msg); } else { LogMessage("SendMessage_mqttClient为null"); } LogMessage("SendMessage成功:" + Payload); }); ​ } catch (Exception ex) { LogMessage("SendMessage异常:" + ex.Message); } } ​ public async void SubscribeAsync(string Topic) { try { LogMessage("SubscribeAsync---Topic[" + Topic + "]"); if (_mqttClient == null) return; ​ Thread.Sleep(1000); await _mqttClient.SubscribeAsync( new List<TopicFilter> { new TopicFilter( Topic, (MqttQualityOfServiceLevel) System.Enum.Parse(typeof (MqttQualityOfServiceLevel), "1")) }); } catch (Exception ex) { LogMessage("SubscribeAsync异常:" + ex.Message); } } } } ​

订阅消息

private MqttHelper _mqttHelper = null; private static string mqttIP = ConfigurationManager.AppSettings["MqttIP"]; private static string mqttTCPPort = ConfigurationManager.AppSettings["MqttTCPPort"]; private static string mqttUser = ConfigurationManager.AppSettings["MqttUser"]; private static string mqttPwd = ConfigurationManager.AppSettings["MqttPwd"]; ​ public void Init() { try { //MQTT参数配置 string ipAddr = mqttIP; string port = mqttTCPPort; string userName = mqttUser; string userPwd = mqttPwd; //mqtt消息队列 _mqttHelper = new MqttHelper(ipAddr, port, userName, userPwd); ​ } catch (Exception e) { throw new Exception(#34;Init异常,{e.Message}"); } } ​ public void TurnOn() { try { if (_mqttHelper == null) throw new Exception("Init异常"); _mqttHelper.ConntionServer(); ​ //接收订阅消息 _mqttHelper.GetActionSubscribe = (obj) => { var msgObj = JsonConvert.DeserializeObject<MsgModel>(obj); if (msgObj != null) { ReceiveMsgCallback?.Invoke(msgObj); } }; ​ //订阅消息 _mqttHelper.SubscribeAsync(#34;071c55ad-f1a5a757/device/message/up/ivs_result"); ​ //MQTT心跳 MessageListenerTimer = new System.Timers.Timer(); MessageListenerTimer.Elapsed += new ElapsedEventHandler(MessageListenerTimer_Elapsed); MessageListenerTimer.Enabled = true; } catch (Exception e) { throw new Exception(#34;TurnOn异常,{e.Message}"); } } ​ public void TurnOff() { try { MessageListenerTimer.Enabled = false; if (_mqttHelper != null) _mqttHelper.DisConntionServer(); } catch (Exception e) { throw new Exception(#34;TurnOff异常,{e.Message}"); } }

解析车号

var license = msgObj.payload.AlarmInfoPlate.result.PlateResult.license; // 解码车号 string base64License = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(license));

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/180666.html

(0)
上一篇 2025-06-12 10:00
下一篇 2025-06-12 10:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信