private void LoadFromXml(string aConfigFileName) { var document = new XmlDocument(); document.Load(aConfigFileName); var aRoot = document.DocumentElement; var items = aRoot.ChildNodes; for (var i = 0; i < items.Count; ++i) { var item = items[i]; switch (item.Name) { case NODE_SENSORS: var sensorsNodes = item.ChildNodes; sensors = new Sensor[sensorsNodes.Count]; for (var j = 0; j < sensorsNodes.Count; ++j) { var configuration = new SensorConfiguration(sensorsNodes[j]); sensors[j] = new Sensor(); sensors[j].SetConfiguration(configuration); } break; case NODE_INGOT: ingot = new Ingot(); ingot.LoadFromXmlNode(item); break; case NODE_RATTLE: rattleMax = Convert.ToDouble(item.InnerText); break; case NODE_SHIFT: shift = Convert.ToDouble(item.InnerText); break; } // switch } // for }
private SensorValue[] GenerateSideValues(Sensor aSensor) { switch (aSensor.Configuration.SideType) { case SensorType.TOP: return GenerateValuesByParameters(aSensor.Configuration.Horizont, aSensor.Configuration.Remove, ingot.Height, 1, -1, 0, 0); case SensorType.BOTTOM: return GenerateValuesByParameters(aSensor.Configuration.Horizont, aSensor.Configuration.Remove, ingot.Height, -1, 1, 0, 0); case SensorType.LEFT: case SensorType.RIGHT: return GenerateValuesByParameters(aSensor.Configuration.Horizont, aSensor.Configuration.Remove, ingot.Width, 0, 0, 0, 0); } return null; }
private SensorValue[] GenerateValues(Sensor aSensor) { if (aSensor.Configuration.SideType == SensorType.POSITION) { return GeneratePositionValues(aSensor); } else { return GenerateSideValues(aSensor); } }
private SensorValue[] GeneratePositionValues(Sensor aSensor) { var values = new SensorValue[(int)(1 + (ingot.Length + prePosition + postPosition) / step)]; var currentPosition = .0; var currentTime = 0; for (var i = 0; i < values.Length; ++i) { var value = currentPosition; // обкновенное линейное движение. values[i] = new SensorValue(value, currentTime); currentTime++; currentPosition += step; } return values; }