protected override void OnStarted()
        {
            //------------------- falta el folder
            // - Calcular el tick
            // - Calcular nombre del fichero
            Started = true;
            DateTime dateTime    = DateTime.Now;
            int      tickSeconds = (dateTime.Hour * 3600) + (dateTime.Minute * 60) + dateTime.Second;
            string   path        = "LogDay//" + _experiment.Name + "_" + (tickSeconds * 4) + ".bin";

            fileStream = new FileStream(path, FileMode.CreateNew, FileAccess.ReadWrite);

            //---------------------------------------------
            _VarsToSave      = _experiment.GetVariables(_systemPriority).Where(x => x.LogValues).ToList();
            _VarsValueToSave = _VarsToSave.ToDictionary(x => x.ID, x => 0D);
            //-------Encabezado------------------------------
            MemoryStream varHeaderStream = new MemoryStream();

            BinarySerializer.Serialize(_VarsToSave, varHeaderStream);

            writer = new BinaryWriter(fileStream);
            writer.Write(varHeaderStream.Length);
            writer.Write(varHeaderStream.ToArray());
            fileStream.Flush();
            //---------------------------------
            _experimentSerializer = new ExperimentSerializer(_VarsToSave);

            //--------------Calcular Tick Timer--------------------------------
            _timer      = TimerCreator.MCD(_VarsToSave.Select(x => x.TicksToSample).ToList());
            _timer.Tick = TimerTickHandler;
            _timer.Start();
        }
Example #2
0
        public static List <double> Deserialize(string fileName, int id)
        {
            var fileStream = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite);

            BinaryReader reader = new BinaryReader(fileStream);
            int          count  = (int)reader.ReadInt64();

            byte[] buffer = new byte[count];
            fileStream.Read(buffer, 0, count);
            MemoryStream varHeaderStream = new MemoryStream(buffer);

            varHeaderStream.Seek(0, SeekOrigin.Begin);
            var xxx = (List <Variable>)BinarySerializer.Deserialize(varHeaderStream);
            ExperimentSerializer             serializer = new ExperimentSerializer(xxx);
            Dictionary <int, List <double> > values     = new Dictionary <int, List <double> >();

            foreach (var variable in xxx)
            {
                values.Add(variable.ID, new List <double>());
            }

            MemoryStream memoryStr = new MemoryStream();

            fileStream.CopyTo(memoryStr);

            BitStream stream = new BitStream(memoryStr);

            stream.Position = 0;
            while (stream.Position < stream.Length)
            {
                var aux = serializer.Deserialize(stream);
                foreach (var d in aux)
                {
                    values[d.Key].Add(d.Value);
                }
            }
            if (values.ContainsKey(id))
            {
                return(values[id]);
            }
            else
            {
                throw new Exception(string.Format("El id {0} not found", id));
            }
        }