private async void OnSerialDeviceDiscovered(string id) { if (id.Contains("UART0")) { // LoRa device. _loraSerialDevice = SerialPortFactory.GetInstance().Create(SerialDeviceType.LoRa); await _loraSerialDevice.Create(id); if (false == _loraSerialDevice.IsConfigured) { _loraSerialDevice.Configure(9600, 500, 500); if (_loraSerialDevice.IsConfigured) { _loraSerialDevice.OnSerialDataEvent += OnLoraDataReceived; } } } else { _bleSerialDevice = SerialPortFactory.GetInstance().Create(SerialDeviceType.BTLe); await _bleSerialDevice.Create(id); if (false == _bleSerialDevice.IsConfigured) { _bleSerialDevice.Configure(9600, 3000, 500); if (_bleSerialDevice.IsConfigured) { _bleSerialDevice.OnSerialDataEvent += OnBleDataReceived; _bleSerialDevice.OnSerialDeviceConnected += OnBLEDeviceConnected; _bleSerialDevice.OnSerialDeviceDisconnected += OnBLEDeviceDisconnected; } } } }
private void OnBleDataReceived(object sender, string data) { Debug.WriteLine(String.Format("Data received from BLE - {0}\n", data)); // If data from BLE is received, we have to send it to LoRa device. if (null != _loraSerialDevice) { if (_loraSerialDevice.IsConfigured == false) { _loraSerialDevice.Configure(9600, 3000, 500); } // Try to parse the value received. double currentBPM = 0; if (double.TryParse(data, out currentBPM)) { _pulseData.Add(currentBPM); if (_pulseData.Count == MAX_PULSE_COUNT) { double average = _pulseData.Average(); _criticalRate.Add(average); if (_criticalRate.Count == MAX_CRITICAL_RATE) { double averageCriticalRate = _criticalRate.Average(); _loraSerialDevice.Send(String.Format("\r\nLoc - {0}\r\n,C.BPM - {1}\r\n, C.Pulse Status - {2}\r\n. Av.BPM - {3}\r\n", LOCATION, (int)average, ConvertToPulseStatus(average, true), ConvertToPulseStatus(averageCriticalRate, true))); _criticalRate.Clear(); } else { _loraSerialDevice.Send(String.Format("\r\nLoc- {0}\r\n,C.BPM - {1}\r\n,C.Pulse Status - {2}\r\n", LOCATION, (int)average, ConvertToPulseStatus(average, false))); } _pulseData.Clear(); _pulseData.Add(average); } } } }