private void Receive(IAsyncResult res) { if (_open) { var remoteIpEndPoint = new IPEndPoint(IPAddress.Any, ListenPort); byte[] receivedByteArray = _client.EndReceive(res, ref remoteIpEndPoint); var receivedString = Encoding.UTF8.GetString(receivedByteArray); string[] dataParsed = receivedString.Split(','); if (dataParsed.Length >= 5) { //var timestamp = long.Parse(dataParsed[0], CultureInfo.InvariantCulture); var sensorTypeInt = int.Parse(dataParsed[1], CultureInfo.InvariantCulture); float x = float.Parse(dataParsed[2], CultureInfo.InvariantCulture); float y = float.Parse(dataParsed[3], CultureInfo.InvariantCulture); float z = float.Parse(dataParsed[4], CultureInfo.InvariantCulture); var vector = new Vector3D(x, y, z); SensorType sensorType; bool found = SensorTypeIntToEnum.TryGetValue(sensorTypeInt, out sensorType); if (found) { var measurement = new Measurement(sensorType, vector); _callback(measurement); } } _client.BeginReceive(Receive, null); } }
private void ShowMeasurement(Measurement measurement) { switch (measurement.SensorType) { case SensorType.Accelerometer: Dispatcher.BeginInvoke((Action)(() => AccelerationVectorControl.UpdateVector(measurement.Value))); break; case SensorType.Gyroscope: Dispatcher.BeginInvoke((Action)(() => GyroscopeVectorControl.UpdateVector(measurement.Value))); break; } }