Esempio n. 1
0
        private void serGumstick_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            AccelData accel = new AccelData();

            byte[] latestData = new byte[packetSize];

            // No. of bytes in input buffer
            int bytesToRead = serGumstick.BytesToRead;

            // Read in all the bytes in the buffer
            lock (serGumstick)
                serGumstick.Read(data, 0, serGumstick.ReadBufferSize);

            // Store latest data
            try
            {
                Array.Copy(data, bytesToRead - packetSize, latestData, 0, packetSize);
            }catch (Exception exp)
            {
                return;
            }

            // Look for new byte (255) and assign accelerations
            for (int index = 0; index < packetSize; index++)
            {
                if (latestData[index] == 255)
                {
                    accel.x = latestData[(index + 1) % 4];
                    accel.y = latestData[(index + 2) % 4];
                    accel.z = latestData[(index + 3) % 4];
                    dataQueue.Enqueue(accel);
                }
            }
        }
Esempio n. 2
0
        private void tmrUpdate_Tick(object sender, EventArgs e)
        {
            AccelData accel = new AccelData();

            // Deque all 'old' acceleration values. Use the latest one
            for (int i = dataQueue.Count; i > 0; i--)
            {
                dataQueue.TryDequeue(out accel);
            }

            txtXAccel.Text = accel.x.ToString();
            txtYAccel.Text = accel.y.ToString();
            txtZAccel.Text = accel.z.ToString();
        }