using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CPF_Console { class Parser { private readonly Form1 form1; public Parser(Form1 form1) { this.form1 = form1; } private String[] splitLine; public void parseLine(String inLine) { splitLine = inLine.Split('\t'); form1.ReceivedLine = inLine; if (splitLine[4].Contains("SBE41 Message")) parseSBE41msg(); if (splitLine[4].Contains("Vel PID Values")) parsePIDmsg(); if (splitLine[4].Contains("[MSC]")) parseMSCmsg(inLine); updateForm(); } private void parseSBE41msg() { Form1.CTDStruct ctdStruct = new Form1.CTDStruct(); if (splitLine.Length > 11) { if (splitLine[10].Length > 0) ctdStruct.pressure = splitLine[10]; else ctdStruct.pressure = splitLine[11]; } if (splitLine.Length > 17) { ctdStruct.RawPressure = splitLine[11]; ctdStruct.LPFPressure = splitLine[12]; ctdStruct.LPFVelocity = splitLine[13]; ctdStruct.DiffVelocity = splitLine[14]; ctdStruct.Diff2Velocity = splitLine[15]; ctdStruct.LPFPressureSlope = splitLine[16]; ctdStruct.samplePeriod = splitLine[17]; } form1.updateCTD(ctdStruct); } private void parsePIDmsg() { Form1.PIDStruct pidStruct = new Form1.PIDStruct(); pidStruct.SetPoint = splitLine[22]; pidStruct.PlatformVelocity = splitLine[23]; pidStruct.Y1 = splitLine[24]; pidStruct.Y2 = splitLine[25]; pidStruct.I = splitLine[26]; pidStruct.v = splitLine[27]; pidStruct.u = splitLine[28]; pidStruct.uCPS = splitLine[29]; form1.updatePID(pidStruct); } private void parseMSCmsg(String mscMsg) { mscMsg = mscMsg + "\r\n"; form1.mscMessage = mscMsg; } private void updateForm() { if (form1.readingFromFile ) form1.DateAndTime = splitLine[1] + " " + splitLine[2]; else form1.DateAndTime = DateTime.Now.ToString("yyy-MMM-dd HH:mm:ss"); form1.Update(); } } }