예제 #1
0
        private void ParseToCsv(string path, PersistanceReader reader)
        {
            if (path.Substring(path.Length - 3, 3) != "bin")
            {
                return;
            }
            var newFileName  = path.Substring(0, path.LastIndexOf('.')) + ".csv";
            var streamWriter = new StreamWriter(new FileStream(newFileName, FileMode.OpenOrCreate, FileAccess.Write));

            var dataStream = new FileStream(path, FileMode.Open, FileAccess.Read);

            streamWriter.WriteLine("time,gP,gR,gY,rP,rR,rY,pP,pR,pY");
            //written like this to provide some feedback that the conversion is actually happening);
            while (true)
            {
                _led.Write(true);
                if (dataStream.Position > dataStream.Length - 44)
                {
                    break;
                }
                streamWriter.WriteLine(reader.GetMessage(dataStream).ToString());
                _led.Write(false);
                if (dataStream.Position > dataStream.Length - 44)
                {
                    break;
                }
                streamWriter.WriteLine(reader.GetMessage(dataStream).ToString());
            }

            dataStream.Close();
            streamWriter.Close();

            /* You will run out of memory doing it this way in the mcu but you should do it this way in the windows program
             * var items = reader.GetMessages(path);
             * foreach (var serializable in items)
             * {
             *  var line = serializable.ToString();
             *  streamWriter.WriteLine(line);
             * }*/
        }