示例#1
0
        private void StartBikeSession()
        {
            DateTime startTime = DateTime.Now;
            bool     running   = true;

            while (running)
            {
                DateTime currentTime = DateTime.Now;
                if ((currentTime - startTime).Ticks / TimeSpan.TicksPerSecond >= 1)
                {
                    startTime   = currentTime;
                    currentData = bike.ReadData();

                    if (currentData == null)
                    {
                        continue;
                    }

                    OnBikeDataReceived?.Invoke(currentData);
                    if (bike is BikeSimulator)
                    {
                        ChangeBikeValues();
                    }
                }
            }
        }
示例#2
0
        public SessionSnapshot ReadData()
        {
            string commandString = commSet.St();

            bikeData = BikeDataHelper.AssignValues(commandString, 0);
            return(bikeData);
        }
示例#3
0
        public DgmlWriter(SessionSnapshot snapshot)
        {
            _snapshot = snapshot;

            _idMap = snapshot.Nodes
                     .Select((x, i) => new { Node = x, Index = i })
                     .ToDictionary(x => x.Node, x => x.Index);
        }
示例#4
0
 public void DecreasePower(int power)
 {
     lock (bikeLockObject)
     {
         currentData = bike.ReadData();
         bike.PutPower(currentData.Power - power);
     }
 }
示例#5
0
 public void DecreaseDistance()
 {
     lock (bikeLockObject)
     {
         currentData = bike.ReadData();
         bike.PutDistance(currentData.Distance - 1000);
     }
 }
示例#6
0
 public void DecreaseTime()
 {
     lock (bikeLockObject)
     {
         currentData = bike.ReadData();
         bike.PutTime(EncodeTime(currentData.Time, -60));
     }
 }
示例#7
0
 public void IncreaseTime()
 {
     lock (bikeLockObject)
     {
         currentData = bike.ReadData();
         Console.WriteLine(currentData.Time);
         bike.PutTime(EncodeTime(currentData.Time, 60));
     }
 }
示例#8
0
 public void OnReceivedNextRequest(dynamic requestData)
 {
     Console.WriteLine("7" + requestData);
     switch ((DataType)requestData.DataType)
     {
     case DataType.BikeData:
         SessionSnapshot snapShot = new SessionSnapshot();
         snapShot = requestData.Data.SessionSnapshot;
         currentUser.Sessions.Last().SessionSnapshots.Add(snapShot);
         WriteToSessionsForUser(snapShot);
         break;
     }
     OnHandleNextRequest();
 }
示例#9
0
        public static SessionSnapshot AssignValues(string valueString, int power)
        {
            SessionSnapshot snapshot = new SessionSnapshot();

            string[] values = valueString.Split('\t');

            snapshot.HeartRate = int.Parse(values[0]);
            snapshot.Rpm       = int.Parse(values[1]);
            snapshot.Speed     = int.Parse(values[2]);
            snapshot.Distance  = int.Parse(values[3]);
            snapshot.Power     = int.Parse(values[4]);
            snapshot.Energy    = int.Parse(values[5]);
            string[] splittedTime = values[6].Split(':');
            int      timeMin      = int.Parse(splittedTime[0]);
            int      timeHr       = int.Parse(splittedTime[1]);

            snapshot.Time         = string.Format("{0:D2}:{1:D2}", timeMin, timeHr);
            snapshot.CurrentPower = power;

            return(snapshot);
        }