using System; using System.IO; using System.Text; using System.Collections; using Microsoft.SPOT; using Microsoft.SPOT.IO; using GHI.Premium.IO; namespace MFConsoleApplication1 { public static class EngrLog { public static StreamWriter engrLogWriter; //public static StreamReader engrLogReader; public static String engrLogFilename; public static PersistentStorage sdCard = new PersistentStorage("SD"); private static String[] dataLabels = { "Date", "Time", "Type", "Comment", "velocitySetPoint", "pressureSetPoint", "pressureDBar", "lastPressure", "velocity", "y1", "y2", "v", "u", "uCPS", "I", "bellowsPosition" }; private static StringBuilder header = new StringBuilder(""); public static void initEngrLog(String initString) { sdCard.MountFileSystem(); VolumeInfo sdVol = new VolumeInfo("SD"); engrLogFilename = sdVol.RootDirectory + "\\engrLog" + DateTime.Now.ToString("yyyyMMMdd" + "T" + "HHmmss"); engrLogWriter = new StreamWriter(engrLogFilename, true); for (int i = 0; i < dataLabels.Length; i++) { if (i != 1) { header.Append(dataLabels[i]); header.Append("\t"); } else { header.Append(dataLabels[i]); header.Append(" (local)\t"); } } writeFile(header.ToString()); writeLog(initString); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Name = " + sdVol.Name.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Total Size = " + sdVol.TotalSize.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Total Free Space = " + sdVol.TotalFreeSpace.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume FileSystem = " + sdVol.FileSystem.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Serial Num = " + sdVol.SerialNumber.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume ID = " + sdVol.VolumeID.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Label = " + sdVol.VolumeLabel.ToString()); writeLog(Program.DateTimeNowMilliSeconds() + "Type\tSystem Data\tComment\tVolume Root Dir = " + sdVol.RootDirectory.ToString()); } public static void writeLog(string logString) { String fileLogString = ""; fileLogString = formatLogString(logString); writeFile(fileLogString); } private static string formatLogString(String logString) { String[] splitString; String[] logStringArray = new String[dataLabels.Length]; splitString = logString.Split('\t'); int len = splitString.Length; for (int i = 0; i < splitString.Length; i++) { for (int j = 0; j < dataLabels.Length; j++) { if (splitString[i] == dataLabels[j]) logStringArray[j] = splitString[i + 1]; } i++; } //String formattedLogString = ""; StringBuilder formattedLogString = new StringBuilder(""); for (int i = 0; i < dataLabels.Length; i++) { // formattedLogString = formattedLogString + logStringArray[i] + "\t"; formattedLogString.Append(logStringArray[i]); formattedLogString.Append("\t"); } return (formattedLogString.ToString()); } private static void writeFile(String fileString) { try { engrLogWriter.WriteLine(fileString); engrLogWriter.Flush(); Debug.Print(fileString); } catch { Debug.Print("Engr log file write error"); } } public static int uploadData() { return (0); } } }