private void OnBluetoothDataReceived(object sender, BluetoothDataReceivedEventArgs e) { foreach (var value in e.Values) { if (!string.IsNullOrEmpty(value) && value != "!") { int.TryParse(value, out int parsedValue); var point = new Point(_currentIteration * ArduinoDelay / 1000.0, parsedValue); Device.BeginInvokeOnMainThread(() => _points.Add(point)); } _currentIteration++; } }
private void _bluetoothConnectionThread_ReceivedData(object sender, BluetoothDataReceivedEventArgs e) { DoOnDataReceived(e.Data); }
/// <summary> /// Notifies subscribed User Data Relay receive listeners that a new packet has been received in /// form of an <see cref="UserDataRelayMessage"/>. /// </summary> /// <param name="userDataRelayMessage">The User Data Relay message.</param> /// <seealso cref="UserDataRelayMessage"/> private void NotifyUserDataRelayReceived(UserDataRelayMessage userDataRelayMessage) { logger.InfoFormat(connectionInterface.ToString() + " User Data Relay received from interface {0} >> {1}.", userDataRelayMessage.SourceInterface.GetDescription(), HexUtils.PrettyHexString(userDataRelayMessage.Data)); // Notify generic event callbacks. if (UserDataRelayReceived != null) { try { lock (UserDataRelayReceived) { var handler = UserDataRelayReceived; if (handler != null) { var args = new UserDataRelayReceivedEventArgs(userDataRelayMessage); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } catch (Exception e) { logger.Error(e.Message, e); } } // Notify specific event callbacks depending on the interface. try { switch (userDataRelayMessage.SourceInterface) { case XBeeLocalInterface.BLUETOOTH: if (BluetoothDataReceived != null) { lock (BluetoothDataReceived) { var handler = BluetoothDataReceived; if (handler != null) { var args = new BluetoothDataReceivedEventArgs(userDataRelayMessage.Data); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } break; case XBeeLocalInterface.MICROPYTHON: if (MicroPythonDataReceived != null) { lock (MicroPythonDataReceived) { var handler = MicroPythonDataReceived; if (handler != null) { var args = new MicroPythonDataReceivedEventArgs(userDataRelayMessage.Data); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } break; case XBeeLocalInterface.SERIAL: if (SerialDataReceived != null) { lock (SerialDataReceived) { var handler = SerialDataReceived; if (handler != null) { var args = new SerialDataReceivedEventArgs(userDataRelayMessage.Data); handler.GetInvocationList().AsParallel().ForAll((action) => { action.DynamicInvoke(this, args); }); } } } break; default: break; } } catch (Exception e) { logger.Error(e.Message, e); } }