我正在尝试在锉刀和我的 PC 之间建立 MQTT 连接。在网上搜索示例,我发现了这个:https://github.com/codingdroplets/MqttCSharpSample
我按照上面的例子创建了一个类来管理这个连接。问题是我需要知道我的 rasp 是否收到消息,我不知道如何。
我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace TelemetryManager
{
public class MQTTmanager
{
private MqttClient mqttClient;
public MQTTmanager() { }
~MQTTmanager() { }
public void MqttConect(string _ipAddress, string _topic, string _serialNumber)
{
Task.Run(() =>
{
mqttClient = new MqttClient(IPAddress.Parse(_ipAddress));
mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived;
mqttClient.Subscribe(new string[] { _topic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
mqttClient.Connect(_serialNumber);
});
}
private void MqttClient_MqttMsgPublishReceived(object sender, uPLibrary.Networking.M2Mqtt.Messages.MqttMsgPublishEventArgs e)
{
var message = Encoding.UTF8.GetString(e.Message);
/* - */
}
public void MqttPublish(string _topic, string _message)
{
Task.Run(() =>
{
if (mqttClient != null && mqttClient.IsConnected)
mqttClient.Publish(_topic, Encoding.UTF8.GetBytes(_message));
});
}
}
}
你不能。这是 MQTT/pubsub/queue 类软件设计的一部分
您应该先确定您的需求,然后再选择技术