Exemple #1
0
        // 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);
                });
            }
        }