![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
MQTT Client for mbed LPC1768 and Application Board over Ethernet; publish only.
Dependencies: C12832 MMA7660 MQTT
Fork of HelloMQTT by
You are viewing an older revision! See the latest version
CspWpfClient
Ein C#-Projekt egal ob Forms oder Wpf benötigt die MQTT Software, die mittels Projekt -> NuGet-Paketmanager installiert werden kann:
Folgende Namespaces sind einzubinden:
using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; using System.Diagnostics; using System.Windows.Threading;
Zeile 1 und 2 wird für MQTT benötigt. Zeile 3 für die Ausgabe im Fendter Ansicht -> Ausgabe mit Debug.WriteLine Zeile 4 für einen sicheren UI Zugriff
Ein globale Variable für den Client wird definiert (Zeile 8):
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } MqttClient client;
Die Verbindung mit dem Broker erfolgt z.B. im Event-Handler von Button btnConnect:
private void btnConnect_Click(object sender, RoutedEventArgs e) { client = new MqttClient("broker.hivemq.com"); string cl_str = "SimpleClientCsp" + RandomString(4); // Client-Id mit Zuffalssstring client.Connect(cl_str); client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; // Messages handler ist zu erzeugen }
Erzeuge den MQTT Messages Handler für das Empfangen von Nachrichten:
private void client_MqttMsgPublishReceived(object sender, uPLibrary.Networking.M2Mqtt.Messages.MqttMsgPublishEventArgs e) { Debug.WriteLine("Received = " + Encoding.UTF8.GetString(e.Message) + " on topic " + e.Topic); }
Die Daten werden allerdings in einem eigenen Thread empfangen, sodass ein Thread-safe Zugriff auf das UI mit folgendem Code gemacht werden kann (siehe https://stackoverflow.com/questions/11625208/accessing-ui-main-thread-safely-in-wpf) :
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { //Update UI here txtReceived.AppendText(str); }));