ReadDouble() public method

public ReadDouble ( ) : double
return double
Esempio n. 1
0
        /// <summary>
        /// Method used for the "Collection Thread"
        /// </summary>
        /// <param name="operation"></param>
        private async void CollectTelemetryData(IAsyncAction operation)
        {
            DataReader reader;
            uint unconsumedBufferLength = 0;
            lock (m_pConnectedSocket)
            {
                reader = new DataReader(m_pConnectedSocket.InputStream);
            }

            while (IsClientConnected | (unconsumedBufferLength > 0))
            {
                await m_pTelemetryReaderSemaphoreSlim.WaitAsync();
                try
                {
                    await reader.LoadAsync(sizeof (byte));
                    unconsumedBufferLength = reader.UnconsumedBufferLength;
                }
                finally
                {
                    m_pTelemetryReaderSemaphoreSlim.Release();
                }
                if (reader.UnconsumedBufferLength <= 0) continue;
                await m_pTelemetryReaderSemaphoreSlim.WaitAsync();
                try
                {
                    byte b;
                    var e = new OnTelemetryDataReceivedEventArgs();
                    b = reader.ReadByte();
                    var commandInformation = (CommandInformation) b;
                    switch (commandInformation)
                    {
                        case CommandInformation.Information:
                            await reader.LoadAsync(sizeof (uint));
                            var n = reader.ReadUInt32();
                            await reader.LoadAsync(n*sizeof (char));
                            e.CommandData = reader.ReadString(n);
                            e.CommandType = CommandInformation.Information;
                            break;
                        case CommandInformation.Gyroscope:
                            float angleX, angleY, angleZ;
                            long gyroTime;
                            await reader.LoadAsync(3*sizeof (double));
                            await reader.LoadAsync(sizeof (long));
                            angleX = Convert.ToSingle(reader.ReadDouble());
                            angleY = Convert.ToSingle(reader.ReadDouble());
                            angleZ = Convert.ToSingle(reader.ReadDouble());
                            gyroTime = reader.ReadInt64();
                            e.CommandData = new GyroscopeData()
                            {
                                Angle = new Vector3(angleX, angleY, angleZ),
                                TimeStamp = new DateTime(gyroTime)
                            };
                            e.CommandType = CommandInformation.Gyroscope;
                            break;
                        case CommandInformation.Accelerometer:
                            float accX, accY, accZ;
                            long accTime;
                            await reader.LoadAsync(3*sizeof (double));
                            await reader.LoadAsync(sizeof (long));
                            accX = Convert.ToSingle(reader.ReadDouble());
                            accY = Convert.ToSingle(reader.ReadDouble());
                            accZ = Convert.ToSingle(reader.ReadDouble());
                            accTime = reader.ReadInt64();
                            e.CommandData = new AccelerometerData()
                            {
                                Acceleration = new Vector3(accX, accY, accZ),
                                TimeStamp = new DateTime(accTime)
                            };
                            e.CommandType = CommandInformation.Accelerometer;
                            break;
                        case CommandInformation.Servo:
                            byte id, velocity;
                            long servoTime;
                            await reader.LoadAsync(2*sizeof (byte));
                            await reader.LoadAsync(sizeof (long));
                            id = reader.ReadByte();
                            velocity = reader.ReadByte();
                            servoTime = reader.ReadInt64();
                            e.CommandData = new ServoControllerData() {ServoId = id, VelocityValue = velocity, TimeStamp = new DateTime(servoTime)};
                            e.CommandType = CommandInformation.Servo;
                            break;
                    }
                    var handler = OnTelemetryDataReceived;
                    handler?.Invoke(this, e);
                }
                finally
                {
                    m_pTelemetryReaderSemaphoreSlim.Release();
                }
            }
        }
Esempio n. 2
0
        public static async void connect()
        {
			HostName hostname = new HostName("myaustin.iptime.org");
            String servicename = "21122";
            Debug.WriteLine("Connecting");

            try
            {
                // Connect to the server (in our case the listener we created in previous step).
                await socket.ConnectAsync(hostname, servicename);

                Debug.WriteLine("Connected");

                Debug.WriteLine("onconnection start");
                DataReader reader = new DataReader(socket.InputStream);
                try
                {
                    String data = "";
                    uint stringLength = 1;
                    while (true)
                    { 
                        uint actualStringLength = await reader.LoadAsync(stringLength);
                            
                        data = reader.ReadString(actualStringLength);
                        if (data.Equals("S"))
                        {
                            uint actualdataLength = await reader.LoadAsync(4);
                            byte[] color_array = new byte[4];
                            reader.ReadBytes(color_array);
                            Color temp_color = new Color();
                            temp_color.A = color_array[0];
                            temp_color.R = color_array[1];
                            temp_color.G = color_array[2];
                            temp_color.B = color_array[3];
                            SolidColorBrush color = new SolidColorBrush(temp_color);
                            double x1,x2,y1,y2,thick;
                            var list = new List<Windows.UI.Xaml.UIElement>();
                            while (true)
                            {
                                actualStringLength = await reader.LoadAsync(1);
                                data = reader.ReadString(actualStringLength);
                                if (data.Equals("P"))
                                {
                                    actualStringLength = await reader.LoadAsync(sizeof(double) * 5);
                                    x1 = reader.ReadDouble();
                                    y1 = reader.ReadDouble();
                                    x2 = reader.ReadDouble();
                                    y2 = reader.ReadDouble();
                                    thick = reader.ReadDouble();

                                    Line l = new Line()
                                    {
                                        X1 = x1,
                                        Y1 = y1,
                                        X2 = x2,
                                        Y2 = y2,
                                        StrokeThickness = thick,
                                        Stroke = color,
                                        StrokeStartLineCap = PenLineCap.Round,
                                        StrokeEndLineCap = PenLineCap.Round,
                                        StrokeLineJoin = PenLineJoin.Round,
                                    };

                                    list.Add(l);
                                }
                                else if (data.Equals("E"))
                                {
                                    OnNetworkRecieved(list);
                                    Debug.WriteLine("Get one stroke");
                                    break;
                                }
                                else
                                    Debug.WriteLine("Expected P or E, {0} ,Network Error!!",data);
                            }
                        }
                        else
                            Debug.WriteLine("Expected S, {0} , Network Error!!",data);
                        
                    }
                }
                catch (Exception exception)
                {
                    // If this is an unknown status it means that the error is fatal and retry will likely fail.
                    if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
                    {
                        throw;
                    }
                    Debug.WriteLine("Read stream failed with error: " + exception.Message);
                }

                // Mark the socket as connected. Set the value to null, as we care only about the fact that the property is set.
                //CoreApplication.Properties.Add("connected", null);
            }
            catch (Exception exception)
            {
                // If this is an unknown status it means that the error is fatal and retry will likely fail.
                if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
                {
                    throw;
                }

                Debug.WriteLine("Connect failed with error: " + exception.Message);
            }
        }