public static void Import(string type, string line, Station station) { switch (type) { case "STATIONTASK": { var data = line.Split(' '); int i = 0; var id = int.Parse(data[i++]); var name = data[i++]; var index = int.Parse(data[i++]); var desc = data[i++]; var stationName = data[i++]; var typeName = data[i++]; //create task and bind to station if (FrameworkManager.TaskTypes.ContainsKey(typeName)) { var task = Activator.CreateInstance(FrameworkManager.TaskTypes[typeName], new object[] { id, name, station }); //bind to machine station.Machine.Tasks.Add(id, task as StationTask); } } break; case "PAUSESIGNAL": { var data = line.Split(' '); if (data.Length == 7) { //load pause signal IDiEx di = new DiEx(); di.Import(line, station.Machine); di = station.Machine.Find <IDiEx>(di.Name); station.PauseSignals.Add(station.PauseSignals.Count + 1, di); } } break; } }
public void ParseContent(StateMachine machine, string line) { if (Section != "PLATFORM") { if (line.Length == 0) { //read next line return; } } switch (Section) { case "MOTION": new MotionCardWrapper().Import(line, machine); break; case "DI": new DiEx().Import(line, machine); break; case "ESTOP": case "START": case "STOP": case "RESET": DiEx.Import(Section, line, machine); break; case "DO": new DoEx().Import(line, machine); break; case "LIGHTGREEN": case "LIGHTYELLOW": case "LIGHTRED": case "BUZZER": DoEx.Import(Section, line, machine); break; case "CY": new CylinderEx().Import(line, machine); break; case "VIO": new VioEx().Import(line, machine); break; case "AXIS": new AxisEx().Import(line, machine); break; case "PLATFORM": if (string.IsNullOrEmpty(IndentSection)) { IndentSection = line.Split(' ')[1]; PlatformEx.Import(line, machine); _indentIndex = 0; } else { if (line.StartsWith("NULL") || line.StartsWith("null") || line.StartsWith("Null")) { var platform = machine.Platforms.Values.FirstOrDefault(p => p.Name == IndentSection); if (platform != null) { platform.Axis[_indentIndex] = null; } _indentIndex++; } else { IAxisEx axis = new AxisEx(); axis.Import(line, machine); axis = machine.Find <IAxisEx>(axis.Name); var platform = machine.Platforms.Values.FirstOrDefault(p => p.Name == IndentSection); if (platform != null) { platform.Axis[_indentIndex] = axis; } _indentIndex++; } } break; case "STATION": if (string.IsNullOrEmpty(IndentSection)) { IndentSection = line.Split(' ')[1]; Station.Import("STATION", line, machine); } else { var data = line.Split(' '); if (data.Length == 6) { //import task Station.Import("STATIONTASK", line, machine.Find <Station>(IndentSection)); } else if (data.Length == 7) { //import pause signal Station.Import("PAUSESIGNAL", line, machine.Find <Station>(IndentSection)); } else { throw new Exception($"{Section} {line} FORMAT ERROR"); } } break; default: throw new Exception($"Not Support Section - {Section}"); } }