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); } }
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)}"); }