private void button1_Click(object sender, EventArgs e) { foreach (string fileName in listBox1.Items) { Console.WriteLine(fileName); Queue <Gts7Line> queue = new Queue <Gts7Line>(); using (var fileStream = File.OpenRead(fileName)) using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, 512)) { String line; while ((line = streamReader.ReadLine()) != null) { Gts7Line gg = Gts7Converter.processLine(line); if (gg != null) { queue.Enqueue(gg); } } } string coordenada = Gts7Converter.coordenadaGenerator(queue); string caderneta = Gts7Converter.cadernetaGenerator(queue); string newFileName = fileName.Replace(".gts7", ""); newFileName = newFileName.Replace(".GTS7", ""); newFileName = newFileName.Replace(".GT7", ""); newFileName = newFileName.Replace(".gt7", ""); string cadFileName = newFileName + "_CADERN.DAT"; string cooFileName = newFileName + "_COORDE.DAT"; File.WriteAllText(cadFileName, caderneta); File.WriteAllText(cooFileName, coordenada); } }
/* * //JOB PHTS420, * //INST station * //UNITS M,D * //STN E10,1.423, * //XYZ 618523.123,7815623.235,850.145 * //BS E9,1.500, * //SD 0.0000,72.1136,5.671 * //BS E9,1.500, * //XYZ 618523.123,7815628.634,851.802 * //SS 1,1.500,CERCA */ static public Gts7Line processLine(string line) { if (line.Length > 0 && line[0] >= 32) { string[] lineSplited = Regex.Split(line, " +"); if (lineSplited.Length > 0) { string[] vv = lineSplited[1].Split(','); switch (lineSplited[0]) { case "JOB": Gts7Line job = new Gts7Line(Gts7Type.JOB); job.name = vv[0]; return(job); case "INST": Gts7Line inst = new Gts7Line(Gts7Type.INST); inst.name = vv[0]; return(inst); case "UNITS": Gts7Line units = new Gts7Line(Gts7Type.UNITS); units.name = vv[0]; units.unit = vv[1]; return(units); case "STN": Gts7Line stn = new Gts7Line(Gts7Type.STN); stn.name = vv[0]; stn.value1 = decimal.Parse(vv[1]); return(stn); case "XYZ": Gts7Line xyz = new Gts7Line(Gts7Type.XYZ); xyz.value1 = decimal.Parse(vv[0]); xyz.value2 = decimal.Parse(vv[1]); xyz.value3 = decimal.Parse(vv[2]); return(xyz); case "BS": Gts7Line bs = new Gts7Line(Gts7Type.BS); bs.name = vv[0]; bs.value1 = decimal.Parse(vv[1]); return(bs); case "SD": Gts7Line sd = new Gts7Line(Gts7Type.SD); sd.value1 = decimal.Parse(vv[0]); sd.value2 = decimal.Parse(vv[1]); sd.value3 = decimal.Parse(vv[2]); return(sd); case "SS": Gts7Line ss = new Gts7Line(Gts7Type.SS); ss.name = vv[0]; ss.value1 = decimal.Parse(vv[1]); ss.ssCommand = vv[2]; return(ss); } } } return(null); }
public static string cadernetaGenerator(Queue <Gts7Line> queue) { StringBuilder buffer = new StringBuilder(); string lastBsName = ""; string lastBsValue = ""; string cadLine = ""; while (queue.Count > 0) { Gts7Line line = queue.Dequeue(); switch (line.type) { case Gts7Type.JOB: string jname = formatName(line.name); line = queue.Peek(); if (line.type != Gts7Type.INST) { Console.WriteLine("Found line:" + typeNames[(int)line.type] + " after JOB"); cadLine = null; break; } line = queue.ElementAt(1); if (line.type != Gts7Type.UNITS) { Console.WriteLine("Found line:" + typeNames[(int)line.type] + " after INST"); cadLine = null; break; } // cadLine = String.Format("41....+00INICIO 42....+{0} 43....+00000000 44....+00000000", jname); cadLine = null; break; case Gts7Type.INST: case Gts7Type.UNITS: case Gts7Type.XYZ: cadLine = null; break; case Gts7Type.STN: string sname = formatName(line.name); string svalue = formatValue8(line.value1); if (sname.CompareTo(lastBsName) == 0 && svalue.CompareTo(lastBsValue) == 0) { cadLine = null; break; } lastBsName = sname; lastBsValue = svalue; cadLine = String.Format("41....+00OCUPAR 42....+{0} 43....+00000000 44....{1}", sname, svalue); break; case Gts7Type.BS: string bsName = formatName(line.name); string bsValue = formatValue8(line.value1); if (bsName.CompareTo(lastBsName) == 0) { cadLine = null; break; } lastBsName = bsName; lastBsValue = bsValue; cadLine = String.Format("41....+000000RE 42....+{0} 43....+00000000 44....+00000000", lastBsName); break; case Gts7Type.SD: string dvalue1 = formatValue8(line.value1 * 100); string dvalue2 = formatValue8(line.value2 * 100); string dvalue3 = formatValue8(line.value3); cadLine = String.Format("110001+{0} 21.104{1} 22.104{2} 31..00{3} 51....+0041+000 87..10{4} 88..10+00000000", lastBsName, dvalue1, dvalue2, dvalue3, lastBsValue); break; case Gts7Type.SS: string ssName = formatName(line.name); string ssValue = formatValue8(line.value1); string ssCommand = formatName(line.ssCommand); if (ssName.CompareTo(lastBsName) == 0 && ssValue.CompareTo(lastBsValue) == 0) { cadLine = null; break; } lastBsName = ssName; lastBsValue = ssValue; if (ssCommand.CompareTo("VANTE") != 0) { ssValue = formatValue8(0); } cadLine = String.Format("41....+{0} 42....{1} 43....+00000000 44....+00000000", ssCommand, ssValue); break; } if (cadLine != null) { Console.WriteLine(cadLine); buffer.Append(cadLine + System.Environment.NewLine); } } return(buffer.ToString()); }
public static string coordenadaGenerator(Queue <Gts7Line> queue) { StringBuilder buffer = new StringBuilder(); string sname = null; string command = null; string cooLine = null; int stnCount = 0; int idx = 0; while (queue.Count > idx) { Gts7Line line = queue.ElementAt(idx); switch (line.type) { case Gts7Type.JOB: case Gts7Type.INST: case Gts7Type.UNITS: case Gts7Type.SD: break; case Gts7Type.XYZ: if (command == null || sname == null) { Console.WriteLine("XYZ line found before STN, BS or SS: " + line); break; } cooLine = formatCoordLine(stnCount, sname, command, line); stnCount++; command = null; sname = null; break; case Gts7Type.STN: sname = formatName(line.name); command = "ESTACAO"; if (stnCount > 0) { cooLine = null; stnCount = 0; break; } command = "ESTACAO"; break; case Gts7Type.BS: sname = formatName(line.name); command = "RE"; break; case Gts7Type.SS: sname = formatName(line.name); command = formatName(line.ssCommand); break; } if (cooLine != null) { Console.WriteLine(cooLine); buffer.Append(cooLine + System.Environment.NewLine); cooLine = null; } idx++; } return(buffer.ToString()); }
private static string formatCoordLine(int stnCount, string name, string command, Gts7Line xyzLine) { return(String.Format("11{0:000}+{1} 81..10{2} 82..10{3} 83..10{4} 41..00+{5}" , stnCount, name, formatValue9(xyzLine.value1), formatValue10(xyzLine.value2), formatValue8(xyzLine.value3), formatName(command))); }