using System; using System.IO; public class fluorconverter { //Averages the multiple scans from Hitachi F-2500 FL Spectrophotometer //V.V. 03/01/2011. vvostri@gmail.com public static void Main() { string filename; do { Console.WriteLine("Enter file name"); filename = Console.ReadLine(); if (File.Exists(filename)) { StreamReader streamvariable = File.OpenText(filename); string lineinfile; int Nscans = 0; int Ndata = 0; while ((lineinfile = streamvariable.ReadLine()) != null) { if (lineinfile == "nm\tData") { Nscans = Nscans + 1; while ((lineinfile = streamvariable.ReadLine()) != null && (lineinfile.Substring(0, 1)) != "S") { Ndata = Ndata + 1; } } } Ndata = Ndata / Nscans; streamvariable.Close(); double[,] data = new double[Nscans + 3, Ndata]; Nscans = 0; streamvariable = File.OpenText(filename); while ((lineinfile = streamvariable.ReadLine()) != null) { if (lineinfile == "nm\tData") { Nscans = Nscans + 1; Ndata = 0; while ((lineinfile = streamvariable.ReadLine()) != null && (lineinfile.Substring(0, 1)) != "S") { data[0, Ndata] = Convert.ToDouble(lineinfile.Substring(0, lineinfile.LastIndexOf("\t"))); if ((lineinfile.Substring(lineinfile.IndexOf("\t") + 1, lineinfile.Length - lineinfile.LastIndexOf("\t") - 1)) == "*****") { data[Nscans, Ndata] = 10000; } else { data[Nscans, Ndata] = Convert.ToDouble(lineinfile.Substring(lineinfile.IndexOf("\t") + 1, lineinfile.Length - lineinfile.LastIndexOf("\t") - 1)); } Ndata = Ndata + 1; } } } streamvariable.Close(); double max = 0; for (int counter = 0; counter != Ndata; counter = counter + 1) { for (int counter2 = 0; counter2 != Nscans; counter2 = counter2 + 1) { data[Nscans + 1, counter] = data[Nscans + 1, counter] + data[counter2 + 1, counter]; double temp = data[Nscans + 1, counter]; } data[Nscans + 1, counter] = data[Nscans + 1, counter] / Nscans; if (data[Nscans + 1, counter] > max) { max = data[Nscans + 1, counter]; } } for (int counter = 0; counter != Ndata; counter = counter + 1) { data[Nscans + 2, counter] = data[Nscans + 1, counter] / max; } FileStream file = new FileStream(filename + ".csv", FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(file); { for (int counter = 0; counter != Ndata; counter = counter + 1) { sw.Write(data[0, counter]); sw.Write(","); sw.Write(data[Nscans + 1, counter]); sw.Write(","); sw.Write(data[Nscans + 2, counter]); sw.Write("\r\n"); } } sw.Close(); file.Close(); Console.WriteLine("File {0} has been converted\n", filename); } else { Console.WriteLine("File {0} not found\n", filename); } } while (filename != "quit"); } }