// this code runs when a message was received void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { string ReceivedMessage = Encoding.UTF8.GetString(e.Message); string ReceivedTopic = e.Topic; if (ReceivedTopic.Contains("application/")) { Console.WriteLine("Topic: " + ReceivedTopic + "\nMsg: " + ReceivedMessage); var json = new JavaScriptSerializer(); //AppResponse results = json.Deserialize<AppResponse>(ReceivedMessage); dynamic result = json.DeserializeObject(ReceivedMessage); AppResponse appResponse = new AppResponse(); appResponse.rxInfo = new RXInfo(); appResponse.txInfo = new TXInfo(); appResponse.txInfo.dataRate = new DataRate(); appResponse.applicationID = result["applicationID"]; appResponse.applicationName = result["applicationName"]; appResponse.nodeName = result["nodeName"]; appResponse.devEUI = result["devEUI"]; appResponse.rxInfo.mac = result["rxInfo"][0]["mac"]; appResponse.rxInfo.time = result["rxInfo"][0]["time"]; appResponse.rxInfo.rssi = result["rxInfo"][0]["rssi"].ToString(); appResponse.rxInfo.loRaSNR = result["rxInfo"][0]["loRaSNR"].ToString(); appResponse.rxInfo.name = result["rxInfo"][0]["name"]; appResponse.rxInfo.latitude = result["rxInfo"][0]["latitude"].ToString(); appResponse.rxInfo.longitude = result["rxInfo"][0]["longitude"].ToString(); appResponse.rxInfo.altitude = result["rxInfo"][0]["altitude"].ToString(); appResponse.txInfo.frequency = result["txInfo"]["frequency"].ToString(); appResponse.txInfo.dataRate.modulation = result["txInfo"]["dataRate"]["modulation"]; appResponse.txInfo.dataRate.bandwidth = result["txInfo"]["dataRate"]["bandwidth"].ToString(); appResponse.txInfo.dataRate.spreadFactor = result["txInfo"]["dataRate"]["spreadFactor"].ToString(); appResponse.txInfo.adr = result["txInfo"]["adr"].ToString(); appResponse.txInfo.codeRate = result["txInfo"]["codeRate"]; appResponse.fCnt = result["fCnt"].ToString(); appResponse.fPort = result["fPort"].ToString(); appResponse.data = result["data"]; byte[] data = Convert.FromBase64String(appResponse.data); appResponse.decodedData = Encoding.UTF8.GetString(data); MessagesList.Add(appResponse); Console.WriteLine(appResponse.ToString()); toolStripStatusMessages.Text = MessagesList.Count.ToString() + " message(s) received"; MessagesView.Invoke((MethodInvoker) delegate { System.Windows.Forms.ListViewItem listViewItem = new System.Windows.Forms.ListViewItem(new string[] { appResponse.rxInfo.time, appResponse.decodedData, ReceivedMessage }, -1); MessagesView.Items.Add(listViewItem); }); } }