Ik ben hier nieuw op het forum en hoop dat ik hier goed zit om mijn vraag te stellen.
Ik heb in het verleden redelijk wat gedaan met PHP maar ben nu bezig met een projectje in C#.
Ik probeer een MQTT class uit te voeren in een bestaand project.
Het toevoegen van de .cs in het project gaat goed alleen nu wil ik dat de MQTT topic gestuurd wordt maar ik weet niet hoe/krijg foutmeldingen.
Als eerste hieronder de MQTT class die netjes in een apparte .cs staat.
Nu wil ik de client.PublisAsync(message);
Uit laten voeren in onderstaande script als if of else.
Maar ik weet niet precies hoe en als ik bij de if await client.PublishAsync(message);
probeer uit te voeren krijg ik de volgende melding.
The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task' vanuit Visual Studio
Ik gebruik visual studio
Helaas kan ik van de code waarin de de MQTT wil laten uitvoeren niet teveel laten zien omdat het om een SDK kit gaat waarvoor ik getekend heb dat deze niet zo openbaar mag worden.
Kan iemand mij hier iets verder mee helplen.
Aangezien dat ik nog niet zoveel met C# heb gedaan een beetje gemakkelijke uitleg
Ik heb in het verleden redelijk wat gedaan met PHP maar ben nu bezig met een projectje in C#.
Ik probeer een MQTT class uit te voeren in een bestaand project.
Het toevoegen van de .cs in het project gaat goed alleen nu wil ik dat de MQTT topic gestuurd wordt maar ik weet niet hoe/krijg foutmeldingen.
Als eerste hieronder de MQTT class die netjes in een apparte .cs staat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MQTTnet; using MQTTnet.Client; using MQTTnet.Client.Options; namespace Test.Publisher { public class Publisher { public static async Task Main(string[] args) { var mqttFactory = new MqttFactory(); IMqttClient client = mqttFactory.CreateMqttClient(); var options = new MqttClientOptionsBuilder() .WithClientId(Guid.NewGuid().ToString()) .WithTcpServer("192.168.1.200", 1883) .WithCleanSession() .Build(); client.UseConnectedHandler(e => { Console.WriteLine("Connecterd to the broker succesfully"); }); client.UseDisconnectedHandler(e => { Console.WriteLine("Disconnected from the broker successfully"); }); await client.ConnectAsync(options); //Console.WriteLine("Please press a key to publish the message"); //Console.ReadLine(); await PublishmessageAsync(client); await client.DisconnectAsync(); } public static void awesomeMethod() { throw new NotImplementedException(); } public static async Task PublishmessageAsync(IMqttClient client) { string messagePayload = "Hello!"; var message = new MqttApplicationMessageBuilder() .WithTopic("RishabhRharma") .WithPayload(messagePayload) .WithAtLeastOnceQoS() .Build(); if (client.IsConnected) { await client.PublishAsync(message); } } } } |
Nu wil ik de client.PublisAsync(message);
Uit laten voeren in onderstaande script als if of else.
Maar ik weet niet precies hoe en als ik bij de if await client.PublishAsync(message);
probeer uit te voeren krijg ik de volgende melding.
The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task' vanuit Visual Studio
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| private void Completed(IAsyncResult ar) { Action completed = ar.AsyncState as Action; try { // Program.Log(PublishAsync(message)); var result = new ZoneStat(this.Panel.EndSend(ar)); if (GetZoneStat(result) == "False1") { await client.PublishAsync(message); Console.WriteLine("Good day."); } else { Console.WriteLine("Good evening."); } |
Ik gebruik visual studio
Helaas kan ik van de code waarin de de MQTT wil laten uitvoeren niet teveel laten zien omdat het om een SDK kit gaat waarvoor ik getekend heb dat deze niet zo openbaar mag worden.
Kan iemand mij hier iets verder mee helplen.
Aangezien dat ik nog niet zoveel met C# heb gedaan een beetje gemakkelijke uitleg