using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using UnityEngine; namespace Sensors.Polar { public class UdpConnection { //public int port = 9090; //public String ipAddress = "192.168.1.7"; private UdpClient client; private bool listening = false; private Action onAccData; private Action onEcgData; private Action onHRData; public UdpConnection(String ipAddress, int port, Action onAccData, Action onEcgData, Action onHrData) { this.onAccData = onAccData; this.onEcgData = onEcgData; this.onHRData = onHrData; var parsedAddress = IPAddress.Parse(ipAddress); client = new UdpClient(new IPEndPoint(parsedAddress, port)); } public void Listen() => Task.Run(async () => { listening = true; while (listening) { var result = await client.ReceiveAsync(); string receivedStr = Encoding.UTF8.GetString(result.Buffer); var data = receivedStr.Split(':'); if (data.Length == 2) { var name = data[0]; if (name.Equals("ACC")) { onAccData(AccData.FromString(data[1])); }else if (name.Equals("ECG")) { onEcgData(EcgData.FromString(data[1])); }else if (name.Equals("HR")) { onHRData(HRData.FromString(data[1])); } } //Debug.Log($"RECEIVED DATA VIA UDP: {receivedStr}"); } }); public void StopListening() { listening = false; } } }