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);
        }