【问题标题】:Subscribe to a topic in MQTT using WPF使用 WPF 订阅 MQTT 中的主题
【发布时间】:2018-04-05 19:43:30
【问题描述】:

我需要订阅具有不同传感器值的不同主题。我的代码问题是,当我单击第一个按钮然后单击第二个按钮时,我失去了第一个主题的价值。有没有一种方法可以让一个按钮订阅不同的主题并在不同的文本框中显示每个主题消息。

async void client_MqttMsgPublishReceivedAsync(object sender, MqttMsgPublishEventArgs e)
{

    string ReceivedMessage = Encoding.UTF8.GetString(e.Message);
    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        txtReceived.Text = ReceivedMessage;
        // Sensor1Reading.Text = txtReceived.Text ;
    });

}

private void Sensor1_Click(object sender, RoutedEventArgs e)
{
    string Topic1 = "sensor1";
    client.Subscribe(new string[] { Topic1 }, new byte[] { 2 }); 
    Sensor1Reading.Text = txtReceived.Text;
}

private void Sensor2_Click(object sender, RoutedEventArgs e)
{
    string Topic2 = "sensor2";
    client.Subscribe(new string[] { Topic2 }, new byte[] { 2 });
    Sensor2Reading.Text = txtReceived.Text;
}

【问题讨论】:

    标签: c# uwp mqtt


    【解决方案1】:

    您应该能够同时订阅两个主题,因为Subscribe 方法可以传递一个字符串数组。也许你可以试试:

    Topic1 = "sensor1";
    Topic2 = "sensor2";
    client.Subscribe(new string[] { Topic1, Topic2 }, new byte[] { 2,2 });
    

    为了在不同的TextBox中显示,您似乎可以通过MqttMsgPublishEventArgstopic参数知道来自哪个主题的消息。请试试这个:

    private async void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
    {
        string ReceivedMessage;
        if (e.Topic == Topic1)
        {
            ReceivedMessage = Encoding.UTF8.GetString(e.Message);
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Sensor1Reading.Text = ReceivedMessage;
            });
        }
        else if (e.Topic == Topic2)
        {
            ReceivedMessage = Encoding.UTF8.GetString(e.Message);
            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                Sensor2Reading.Text = ReceivedMessage;
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多