示例#1
0
        async Task ConsumeClientDataAsync()
        {
            await Task.Run(() => {
                while (Thread.CurrentThread.IsAlive)
                {
                    var message = InputMessages.Take();

                    Trace.TraceInformation("Processing message : " + message);

                    var command = message.Split(':')[0];
                    var value   = message.Split(':')[1];

                    switch (command)
                    {
                    case "SLOPE":
                        _ = SendSlopeAsync(value);
                        break;

                    case "TARGET_POWER":
                        _ = SendTargetPowerAsync(value);
                        break;

                    case "START_RECORDING":
                        _ = FitWriter.StartAsync();
                        break;

                    case "WRITE_RECORD":
                        _ = FitWriter.AddRecordAsync(FitRecord.FromString(value));
                        break;

                    case "STOP_RECORDING":
                        _ = FitWriter.StopAsync();
                        break;

                    case "PAUSE_RECORDING":
                        _ = FitWriter.PauseAsync();
                        break;

                    case "RESUME_RECORDING":
                        _ = FitWriter.ResumeAsync();
                        break;

                    default:
                        break;
                    }
                }
            });
        }
示例#2
0
        static void FITFromCSV()
        {
            var      started      = false;
            DateTime segmentStart = DateTime.Now;
            int      timeOffset   = 0;

            foreach (var f in Directory.GetFiles(@"C:\Users\Damien\Documents\BeamNG.drive\VeloActivities\test"))
            {
                var filename = f.Split('\\').Last().Split('.').First();

                var fields = filename.Split('_');

                var year  = int.Parse(fields[0]);
                var month = int.Parse(fields[1]);
                var day   = int.Parse(fields[2]);
                var hour  = int.Parse(fields[3]);
                var min   = int.Parse(fields[4]);
                var sec   = int.Parse(fields[5]);

                segmentStart = new DateTime(year, month, day, hour, min, sec);

                if (!started)
                {
                    FitWriter.Start(segmentStart);
                    started = true;
                }

                using (var s = new StreamReader(f))
                {
                    while (!s.EndOfStream)
                    {
                        var ligne = s.ReadLine();
                        timeOffset = int.Parse(ligne.Split(',')[0]);

                        string    fitString = string.Join(",", ligne.Split(',').Skip(1).ToArray());
                        FitRecord record    = FitRecord.FromString(fitString);

                        FitWriter.AddRecord(record, segmentStart + TimeSpan.FromSeconds(timeOffset));
                    }
                }
            }
            FitWriter.Stop(segmentStart + TimeSpan.FromSeconds(timeOffset));
        }