private string ParseM114(string dataReceived) { string returnData = dataReceived; string positionPattern = @"X:[-]*[0-9,.]*\s*Y:[-]*[0-9,.]*\s*Z:[-]*[0-9,.]*\s*E:[0-9,.]*\s*Count [A-Z]:\s*[-]*[0-9]*\s*[A-Z]:[-]*[0-9]*\s*[A-Z]:[-]*[0-9]*"; // Get all responces var responces = dataReceived.Split('\n'); // Create M114 responce Event foreach (var responce in responces) { // X:0.00 Y:0.00 Z:5.00 E:0.00 Count X: 0 Y:0 Z:4000 if (Regex.Match(responce, positionPattern).Success) { var xstring = Regex.Match(responce, @"(?:X:)([-,0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; var ystring = Regex.Match(responce, @"(?:Y:)([-,0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; var zstring = Regex.Match(responce, @"(?:Z:)([-,0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; //var estring = Regex.Match(responce, @"(?:E:)([0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; // Not Needed (yet) var currentPosition = new CurrentPosition(xstring, ystring, zstring); CurrentPosition.Xstring = xstring; CurrentPosition.Ystring = ystring; CurrentPosition.Zstring = zstring; OnM114GetCurrentPosition(currentPosition); returnData = Regex.Replace(dataReceived, positionPattern, ""); } } return(returnData); }
private void ParseM114() { // Return if The _dataReceived not contains ok\n if (WaitForOkAndNewLineToBeReceived() == false) { return; } // Get all responces var responces = GetAllResponces(); // Create M114 responce Event foreach (var responce in responces) { if (responce.Contains("X:") && responce.Contains("Y:") && responce.Contains("Z:")) { var xstring = Regex.Match(responce, @"(?:X:)([0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; var ystring = Regex.Match(responce, @"(?:Y:)([0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; var zstring = Regex.Match(responce, @"(?:Z:)([0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; //var estring = Regex.Match(responce, @"(?:E:)([0-9]*.[0-9]*)", RegexOptions.CultureInvariant).Groups[1].Value; // Not Needed (yet) var currentPosition = new CurrentPosition(xstring, ystring, zstring); OnM114GetCurrentPosition(currentPosition); } //Delete the responce from the received bytes _dataReceived = DeleteResponceUpToAndInclusiveOk(_dataReceived); OnReadyForNextCommand(EventArgs.Empty); } }
/// <summary> /// Handle event that rise after M114 /// </summary> private void OnM114GetCurrentPosition(CurrentPosition currentPosition) { var handler = M114GetCurrentPosition; handler?.Invoke(this, currentPosition); }