Advertisement
Guest User

Program.cs

a guest
Jun 3rd, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.35 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using System.Diagnostics;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading;
  8. using ANTReporting;
  9.  
  10. namespace FireAnt
  11. {
  12.     class Program
  13.     {
  14.         static bool filterHR = true;
  15.         static bool filterCadence = true;//true;
  16.  
  17.         const int readingsPerSecond = 10;
  18.         const int MAX_ZERO_HRS_TO_OMIT = readingsPerSecond * 3;
  19.        
  20.         static int zeroHRCount = 0;
  21.  
  22.         private static int zeroCadenceCount = 0;
  23.         private static int MAX_RPM_ZEROS_TO_OMIT = readingsPerSecond * 3;
  24.        
  25.         static void Main(string[] args)
  26.         {
  27.             try
  28.             {
  29.                 if (!File.Exists("ANTDevicesDescription.txt"))
  30.                     File.WriteAllText("ANTDevicesDescription.txt", Resources.ANTDevicesDescription);
  31.  
  32.                 int numSensorsForCadence = 2;
  33.                 float minCadence = 10f;
  34.  
  35.                 if (args.Length >= 1)
  36.                     numSensorsForCadence = int.Parse(args[1]);
  37.                 if (args.Length >= 2)
  38.                     minCadence = float.Parse(args[2]);
  39.  
  40.                 ANTReporter reporter = null;
  41.  
  42.                 try
  43.                 {
  44.                     reporter = new ANTReporter(numSensorsForCadence, minCadence);
  45.                 }
  46.                 catch(Exception e)
  47.                 {
  48.                     if (reporter != null)
  49.                         reporter.CloseANTReporter();
  50.                     Console.WriteLine(e.Message+ "\n"+e.StackTrace);
  51.                     Console.ReadLine();
  52.                     return;
  53.                 }
  54.  
  55.                 Stopwatch sw = new Stopwatch();
  56.                 sw.Start();
  57.  
  58.                 float hr = 0;
  59.                 float hrMonitorDeviceNumber = 0;
  60.                 float cadenceSensorDeviceNumber = 0;
  61.                 float lastValidHR = 0;
  62.                 float lastValidCadence = 0;
  63.                 float cadence = 0;
  64.  
  65.                 using (var logWriter = File.CreateText("FireAnt.log"))
  66.                 {
  67.                     while (true)
  68.                     {
  69.                         hr = reporter.IsHeartRateMonitorConnected() ? reporter.GetHeartRate() : 0;
  70.                         hrMonitorDeviceNumber = reporter.GetHRDeviceNumber();
  71.                         if (reporter.IsBikeConnected())
  72.                         {
  73.                             cadence = reporter.GetBikeCadence();
  74.                             lastValidCadence = cadence;
  75.                             zeroCadenceCount = 0;
  76.                         }
  77.                         else
  78.                         {
  79.                             //Console.Write("####### ");
  80.                             //-----------------------------------------------
  81.                             // FILTERING CADENCE
  82.                             if (filterCadence)
  83.                             {
  84.                                 zeroCadenceCount++;
  85.                                 if (zeroCadenceCount > MAX_RPM_ZEROS_TO_OMIT)
  86.                                 {
  87.                                     lastValidCadence = 0;
  88.                                 }
  89.                                 cadence = lastValidCadence;
  90.                             }
  91.                             else
  92.                                 cadence = 0;
  93.                         }
  94.                         cadenceSensorDeviceNumber = reporter.GetCadenceSensorDeviceNumber();
  95.                         var s = hr + " " + cadence;
  96.  
  97.                         //Main Console Write
  98.                         Console.WriteLine("{0} {1}", hr, reporter.SmoothCadence);
  99.                        
  100.                         //Console.Write(s+"              "); //Non filtered
  101.  
  102.                         //-----------------------------------------------
  103.                         // FILTERING HEART RATE
  104.                         if (filterHR )
  105.                         {
  106.                             if (hr != 0)
  107.                             {
  108.                                 lastValidHR = hr;
  109.                                 zeroHRCount = 0;
  110.                             }
  111.                             else
  112.                             {
  113.                                 zeroHRCount++;
  114.                                 if (zeroHRCount > MAX_ZERO_HRS_TO_OMIT)
  115.                                 {
  116.                                     lastValidHR = 0;
  117.                                 }
  118.                             }
  119.                             hr = lastValidHR;
  120.                         }
  121.                         //-----------------------------------------------
  122.                         s = Math.Round(hr) + " " + Math.Round(cadence);
  123.                         //Console.WriteLine(s);
  124.                         //Console.WriteLine(s + " (hrmId: " + hrMonitorDeviceNumber + ", bikeId: " + cadenceSensorDeviceNumber + ")");    //Filtered
  125.                         if (sw.ElapsedMilliseconds >= 1000)
  126.                         {
  127.                             logWriter.WriteLine(s);
  128.                             logWriter.Flush();
  129.                             sw.Reset();
  130.                             sw.Start();
  131.                         }
  132.                         Thread.Sleep(1000 / readingsPerSecond);
  133.                     }
  134.                 }
  135.             }
  136.             catch (Exception e)
  137.             {
  138.                 Console.WriteLine(e.Message);
  139.             }
  140.         }
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement