Пример #1
0
 private void  Timer_Tick(object sender, object e)
 {
     /* Display the results (acceleration is measured in m/s^2) */
     accel.getEvent(ref Accelevent);
     Debug.WriteLine("ACCEL  ");
     Debug.WriteLine("X: " + Accelevent.acceleration.x + "  " + "Y: " + Accelevent.acceleration.y + "  " + "Z: " + Accelevent.acceleration.z + "  m/s^2");
     AccelXaxis.Text = Accelevent.acceleration.x.ToString();
     AccelYaxis.Text = Accelevent.acceleration.y.ToString();
     AccelZaxis.Text = Accelevent.acceleration.z.ToString();
     /* Display the results (magnetic vector values are in micro-Tesla (uT)) */
     mag.getEvent(ref Magevent);
     Debug.WriteLine("MAG  ");
     Debug.WriteLine("X: " + Magevent.magnetic.x + "  " + "Y: " + Magevent.magnetic.y + "  " + "Z: " + Magevent.magnetic.z + "  uT");
     MagXaxis.Text = Magevent.magnetic.x.ToString();
     MagYaxis.Text = Magevent.magnetic.y.ToString();
     MagZaxis.Text = Magevent.magnetic.z.ToString();
     /* Display the results (gyrocope values in rad/s) */
     gyro.getEvent(ref Gyroevent);
     Debug.WriteLine("GYRO  ");
     Debug.WriteLine("X: " + Gyroevent.gyro.x + "  " + "Y: " + Gyroevent.gyro.y + "  " + "Z: " + Gyroevent.gyro.z + "  rad/s");
     GyroXaxis.Text = Gyroevent.gyro.x.ToString();
     GyroYaxis.Text = Gyroevent.gyro.y.ToString();
     GyroZaxis.Text = Gyroevent.gyro.z.ToString();
     /* Display the pressure sensor results (barometric pressure is measure in hPa) */
     bmp.getEvent(ref Pressevent);
     if (Pressevent.pressure != 0)
     {
         /* Display atmospheric pressure in hPa */
         Debug.WriteLine("PRESS :" + Pressevent.pressure + " hPa ");
         Pressure.Text = Pressevent.pressure.ToString();
         /* Display ambient temperature in C */
         float temperature = 0;
         bmp.getTemperature(ref temperature);
         Debug.WriteLine("TEMP :" + temperature + " C ");
         Temperature.Text = temperature.ToString();
         /* Then convert the atmospheric pressure, SLP and temp to altitude    */
         /* Update this next line with the current SLP for better results      */
         float seaLevelPressure = Adafruit_BMP085_Unified.SENSORS_PRESSURE_SEALEVELHPA;
         float altitude         = bmp.pressureToAltitude(seaLevelPressure, Pressevent.pressure, temperature);
         Debug.WriteLine("ALTI :" + altitude + " m ");
         Altitude.Text = altitude.ToString();
         DateTime.Text = System.DateTime.Now.ToString();
         SensorData SensorDataObj = new SensorData(Accelevent.acceleration.x, Accelevent.acceleration.y, Accelevent.acceleration.z,
                                                   Magevent.magnetic.x, Magevent.magnetic.y, Magevent.magnetic.z, Gyroevent.gyro.x, Gyroevent.gyro.y, Gyroevent.gyro.z,
                                                   Pressevent.pressure, temperature, altitude, System.DateTime.Now.ToString("dd-MMM-yyyy HH:mm:ss tt"));
         String JsonData = Serialize(SensorDataObj);
         EventHubSend(JsonData);
     }
 }
Пример #2
0
        // Timer loop
        //NOT USED **********************************************************
        private void Timer_Tick(object sender, object e)
        {
            var xx = Stopwatch.StartNew();

            /* Display the results (acceleration is measured in m/s^2) */
            accel.getEvent(ref Accelevent);

            //Debug.WriteLine("ACCEL  ");
            //Debug.WriteLine("X: " + Accelevent.acceleration.x + "  " + "Y: " + Accelevent.acceleration.y + "  " + "Z: " + Accelevent.acceleration.z + "  m/s^2");

            /* Display the results (magnetic vector values are in micro-Tesla (uT)) */
            //mag.getEvent(ref Magevent);
            //Debug.WriteLine("MAG  ");
            //Debug.WriteLine("X: " + Magevent.magnetic.x + "  " + "Y: " + Magevent.magnetic.y + "  " + "Z: " + Magevent.magnetic.z + "  uT");
            //MagXaxis.Text = Magevent.magnetic.x.ToString();
            //MagYaxis.Text = Magevent.magnetic.y.ToString();
            //MagZaxis.Text = Magevent.magnetic.z.ToString();

            /* Display the results (gyrocope values in rad/s) */
            gyro.getEvent(ref Gyroevent);
            //gyroXangle += (Gyroevent.gyro.x * timerMS / 1000);
            //gyroYangle += (Gyroevent.gyro.y * timerMS / 1000);
            //gyroZangle += (Gyroevent.gyro.z * timerMS / 1000);
            //Debug.WriteLine("GYRO  ");
            //Debug.WriteLine("X: " + Gyroevent.gyro.x + "  " + "Y: " + Gyroevent.gyro.y + "  " + "Z: " + Gyroevent.gyro.z + "  rad/s");
            int elapsed = (int)tt.ElapsedMilliseconds;

            tt.Restart();
            calcX = XkalmanCalculate((float)(Math.Atan2(Accelevent.acceleration.y, Accelevent.acceleration.z) * Pi180), Gyroevent.gyro.x, elapsed);
            calcY = YkalmanCalculate((float)(Math.Atan2(-Accelevent.acceleration.x, Math.Sqrt(Accelevent.acceleration.y * Accelevent.acceleration.y + Accelevent.acceleration.x * Accelevent.acceleration.z)) * Pi180), Gyroevent.gyro.y, elapsed);
            //calcZ = ZkalmanCalculate((float)(Math.Atan2(Accelevent.acceleration.z, Accelevent.acceleration.y) * Pi180), Gyroevent.gyro.z, elapsed);
            //COULD USE THE CALIBRATE FOR SQUARE ON THE LOAD THEN USE THE YAW (Z) TO MEASURE HOOK SPIN

            calcZ = 0;
            //calcX = 0.98F * (calcX + Gyroevent.gyro.z * timerMS * SCALE_GYR_ANGLE / 1000F) + 0.02F * (float)(90 - Math.Atan2(Accelevent.acceleration.y, Accelevent.acceleration.x) * (180 / Math.PI));
            //calcY = 0;
            //calcZ = 0.98F * (calcZ + Gyroevent.gyro.z * timerMS * SCALE_GYR_ANGLE / 1000F) + 0.02F * (float)(Math.Atan2(Accelevent.acceleration.z, Accelevent.acceleration.y) * (180 / Math.PI));

            if (timerCnt == 5)
            {
                //float AccX = (AccXAvg / 4) * SCALE_ACC_ANGLE;
                //float AccY = (AccYAvg / 4) * SCALE_ACC_ANGLE;
                //float AccZ = (AccZAvg / 4) * SCALE_ACC_ANGLE;

                //var AccX = 90 - Math.Atan2(AccYAvg / 4, AccXAvg / 4) * (180 / Math.PI);
                //var AccZ = Math.Atan2(AccZAvg / 4, AccYAvg / 4) * (180 / Math.PI);
                //var AccY = 0;

                //AccelXaxis.Text = String.Format("{0:0.0}", AccX);
                //AccelYaxis.Text = String.Format("{0:0.0}", AccY);
                //AccelZaxis.Text = String.Format("{0:0.0}", AccZ);

                AccelXaxisC.Text = String.Format("{0:0.0}", calcX);
                AccelYaxisC.Text = String.Format("{0:0.0}", calcY);
                AccelZaxisC.Text = String.Format("{0:0.0}", calcZ);

                //GyroXaxis.Text = String.Format("{0:0.0}", gyroXangle);
                //GyroYaxis.Text = String.Format("{0:0.0}", gyroYangle);
                //GyroZaxis.Text = String.Format("{0:0.0}", gyroZangle);
                //GyroXaxis.Text = Gyroevent.gyro.x.ToString();
                //GyroYaxis.Text = Gyroevent.gyro.y.ToString();
                //GyroZaxis.Text = Gyroevent.gyro.z.ToString();

                /* Display ambient temperature in C */
                float temperature = 0;
                //bmp.getTemperature(ref temperature);
                //Temperature.Text = temperature.ToString();

                /* Display the pressure sensor results (barometric pressure is measure in hPa) */
                //////////////////////////////bmp.getEvent(ref Pressevent);
                /* Display atmospheric pressure in hPa */
                //Debug.WriteLine("PRESS :" + Pressevent.pressure + " hPa ");
                Pressure.Text = Pressevent.pressure.ToString();
                /* Then convert the atmospheric pressure, SLP and temp to altitude    */
                /* Update this next line with the current SLP for better results      */
                float seaLevelPressure = Adafruit_BMP085_Unified.SENSORS_PRESSURE_SEALEVELHPA;
                float altitude         = bmp.pressureToAltitude(seaLevelPressure, Pressevent.pressure, temperature);
                //Debug.WriteLine("ALTI :" + altitude + " m " );
                Altitude.Text = altitude.ToString();
                //DateTime.Text = System.DateTime.Now.ToString();

                mySocket.Send(calcX + ":" + calcY + ":" + calcZ + ":" + (-1 * gyroXangle).ToString() + ":" + (-1 * gyroYangle).ToString() + ":" + (-1 * gyroZangle).ToString() + ":" + altitude.ToString());

                //AccXAvg = 0;
                //AccYAvg = 0;
                //AccZAvg = 0;
                timerCnt    = 0;
                Status.Text = elapsed.ToString();
            }
            timerCnt++;
        }