/// <summary> /// Creates an instance of a rotator status from the notification string received from the NexDome /// hardware. /// </summary> /// <param name="status">The status string received from the controller hardware.</param> /// <returns>An object implementing <see cref="IRotatorStatus" /> populated with the status values.</returns> public IRotatorStatus FromRotatorStatusPacket(string status) { var match = RotatorStatusRegex.Match(status); var captures = match.Groups["Values"].Captures; var valueCollection = captures.Cast <Capture>().Select(p => p.Value); return(RotatorStatus.FromValueCollection(valueCollection)); }
/// <summary>Creates and populates a RotatorStatus instance from a collection of string values.</summary> /// <param name="valueCollection"> /// A collection of strings containing the status values that will need /// to be parsed. /// </param> /// <returns>IRotatorStatus.</returns> public static IRotatorStatus FromValueCollection(IEnumerable <string> valueCollection) { var values = valueCollection.ToArray(); var status = new RotatorStatus { Azimuth = int.Parse(values[0]), AtHome = values[1] == "1", DomeCircumference = int.Parse(values[2]), HomePosition = int.Parse(values[3]), DeadZone = int.Parse(values[4]), // Fixes #20 }; return(status); }