Esempio n. 1
0
        public static void Main()
        {
            Result result;

            Debug.WriteLine("devMobile.IoT.SeeedE5LoRaWANDeviceClient starting");

            try
            {
                using (SeeedE5LoRaWANDevice device = new SeeedE5LoRaWANDevice())
                {
                    result = device.Initialise(SerialPortId, 9600);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"Initialise failed {result}");
                        return;
                    }

#if CONFIRMED
                    device.OnMessageConfirmation += OnMessageConfirmationHandler;
#endif
                    device.OnReceiveMessage += OnReceiveMessageHandler;
#if RESET
                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Reset");
                    result = device.Reset();
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"Reset failed {result}");
                        return;
                    }
#endif

                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Region {Region}");
                    result = device.Region(Region);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"Region failed {result}");
                        return;
                    }

                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} ADR On");
                    result = device.AdrOn();
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"ADR on failed {result}");
                        return;
                    }

                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Port {MessagePort}");
                    result = device.Port(MessagePort);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"Port on failed {result}");
                        return;
                    }

#if OTAA
                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} OTAA");
                    result = device.OtaaInitialise(Config.AppEui, Config.AppKey);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"OTAA Initialise failed {result}");
                        return;
                    }
#endif

#if ABP
                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} ABP");
                    result = device.AbpInitialise(Config.DevAddress, Config.NwksKey, Config.AppsKey);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"ABP Initialise failed {result}");
                        return;
                    }
#endif

                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Join start Timeout:{JoinTimeOut.TotalSeconds} Seconds");
                    result = device.Join(true, JoinTimeOut);
                    if (result != Result.Success)
                    {
                        Debug.WriteLine($"Join failed {result}");
                        return;
                    }
                    Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Join finish");

                    while (true)
                    {
#if PAYLOAD_BCD
                        Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Send Timeout:{SendTimeout.TotalSeconds} Seconds payload BCD:{PayloadBcd}");
#if CONFIRMED
                        result = device.Send(PayloadBcd, true, SendTimeout);
#else
                        result = device.Send(PayloadBcd, false, SendTimeout);
#endif
#endif

#if PAYLOAD_BYTES
                        Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Send Timeout:{SendTimeout.TotalSeconds} Seconds payload Bytes:{BitConverter.ToString(PayloadBytes)}");
#if CONFIRMED
                        result = device.Send(PayloadBytes, true, SendTimeout);
#else
                        result = device.Send(PayloadBytes, false, SendTimeout);
#endif
#endif
                        if (result != Result.Success)
                        {
                            Debug.WriteLine($"Send failed {result}");
                        }

                        Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Sleep");
                        result = device.Sleep();
                        if (result != Result.Success)
                        {
                            Debug.WriteLine($"Sleep failed {result}");
                            return;
                        }

                        Thread.Sleep(300000);

                        Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Wakeup");
                        result = device.Wakeup();
                        if (result != Result.Success)
                        {
                            Debug.WriteLine($"Wakeup failed {result}");
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
Esempio n. 2
0
        static void OnReceiveMessageHandler(int port, int rssi, double snr, string payloadBcd)
        {
            byte[] payloadBytes = SeeedE5LoRaWANDevice.BcdToByes(payloadBcd);

            Debug.WriteLine($"{DateTime.UtcNow:hh:mm:ss} Receive Message RSSI:{rssi} SNR:{snr} Port:{port} Payload:{payloadBcd} PayLoadBytes:{BitConverter.ToString(payloadBytes)}");
        }