private ScriptError ParseCommand(string CMDstring)
        {
            string processedString;

            if (CMDstring.Contains("SendString"))
            {
                processedString = Regex.Replace(CMDstring, @"\s*SendString\s*\(\s*""", "");
                processedString = Regex.Replace(processedString, @"""\s*\)\s*", "");

                if (UARTSendCMD(processedString) == false)
                {
                    return(ScriptError.CannotTalkToSP);
                }
            }
            else if (CMDstring.Contains("DelayMS"))
            {
                processedString = Regex.Replace(CMDstring, @"\s*DelayMS\s*\(\s*", "");
                processedString = Regex.Replace(processedString, @"\s*\)\s*", "");

                Thread.Sleep(int.Parse(processedString));
            }
            else if (CMDstring.Contains("ReceiveString"))
            {
                char[] DelimiterChars = { ',', ';', ' ', '\t' };

                processedString = Regex.Replace(CMDstring, @"\s*ReceiveString\s*\(\s*""", "");
                processedString = Regex.Replace(processedString, @"""\s*\)\s*", "");

                int            DelimiterCNTR = 0;
                RXStringFormat RXFormat      = RXStringFormat.RXFNone;

                for (int i = 0; i < processedString.Length; i++)
                {
                    if (processedString[i] == ',' || processedString[i] == ';' ||
                        processedString[i] == ' ' || processedString[i] == '\t')
                    {
                        DelimiterCNTR++;
                    }
                    else if (processedString[i] == '%')
                    {
                        if (processedString[i + 1] == 'd')
                        {
                            RXFormat = RXStringFormat.RXFInteger;
                        }
                        else if (processedString[i + 1] == 'c')
                        {
                            RXFormat = RXStringFormat.RXFCharacter;
                        }
                        else if (processedString[i + 1] == 's')
                        {
                            RXFormat = RXStringFormat.RXFString;
                        }
                        else if (processedString[i + 1] == 'l')
                        {
                            RXFormat = RXStringFormat.RXFLong;
                        }
                        else if (processedString[i + 1] == 'f')
                        {
                            RXFormat = RXStringFormat.RXFFloat;
                        }
                        break;
                    }
                }

                string OuputString = this.FreqCntrPort.ReadExisting();
                this.Log.PrintLog(this, "Result: " + OuputString.Replace(System.Environment.NewLine, string.Empty), LogDetailLevel.LogEverything);
                string[] Output = OuputString.Split(DelimiterChars);

                if (Output.Length < DelimiterCNTR)
                {
                    return(ScriptError.NotEnoughParamsRet);
                }

                if (RXFormat == RXStringFormat.RXFInteger)
                {
                    try
                    {
                        measuredFreq = int.Parse(Output[DelimiterCNTR]);
                    }
                    catch
                    {
                        return(ScriptError.UnexpectedOutputFormat);
                    }
                }
                else if (RXFormat == RXStringFormat.RXFString)
                {
                    try
                    {
                        receivedString = OuputString;
                    }
                    catch
                    {
                        return(ScriptError.UnexpectedOutputFormat);
                    }
                }
                else if (RXFormat == RXStringFormat.RXFFloat)
                {
                    try
                    {
                        string matchfound = Regex.Match(Output[DelimiterCNTR], @"\d*.*\d").Value;
                        measuredFreq = (int)(float.Parse(matchfound) * 1000000);
                    }
                    catch
                    {
                        return(ScriptError.UnexpectedOutputFormat);
                    }
                }
                this.Log.PrintLog(this, "MeasuredFrequency: " + measuredFreq.ToString(), LogDetailLevel.LogEverything);
            }

            return(ScriptError.NoError);
        }
        private ScriptError ParseCommand(string CMDstring)
        {
            string processedString;

            if (CMDstring.Contains("SendString"))
            {
                processedString = Regex.Replace(CMDstring, @"\s*SendString\s*\(\s*""", "");
                processedString = Regex.Replace(processedString, @"""\s*\)\s*", "");

                if (UARTSendCMD(processedString) == false)
                {
                    return(ScriptError.CannotTalkToSP);
                }
            }
            else if (CMDstring.Contains("DelayMS"))
            {
                processedString = Regex.Replace(CMDstring, @"\s*DelayMS\s*\(\s*", "");
                processedString = Regex.Replace(processedString, @"\s*\)\s*", "");

                Thread.Sleep(int.Parse(processedString));
            }
            else if (CMDstring.Contains("ReceiveString"))
            {
                char[] DelimiterChars = { ',', ';', ' ', '\t' };

                processedString = Regex.Replace(CMDstring, @"\s*ReceiveString\s*\(\s*""", "");
                processedString = Regex.Replace(processedString, @"""\s*\)\s*", "");

                int            DelimiterCNTR = 0;
                RXStringFormat RXFormat      = RXStringFormat.RXFNone;

                for (int i = 0; i < processedString.Length; i++)
                {
                    if (processedString[i] == ',' || processedString[i] == ';' ||
                        processedString[i] == ' ' || processedString[i] == '\t')
                    {
                        DelimiterCNTR++;
                    }
                    else if (processedString[i] == '%')
                    {
                        if (processedString[i + 1] == 'd')
                        {
                            RXFormat = RXStringFormat.RXFInteger;
                        }
                        else if (processedString[i + 1] == 'c')
                        {
                            RXFormat = RXStringFormat.RXFCharacter;
                        }
                        else if (processedString[i + 1] == 's')
                        {
                            RXFormat = RXStringFormat.RXFString;
                        }
                        else if (processedString[i + 1] == 'l')
                        {
                            RXFormat = RXStringFormat.RXFLong;
                        }
                        else if (processedString[i + 1] == 'f')
                        {
                            RXFormat = RXStringFormat.RXFFloat;
                        }
                        break;
                    }
                }

                string   OuputString = this.FreqCntrPort.ReadExisting();
                string[] Output      = OuputString.Split(DelimiterChars);

                if (Output.Length < DelimiterCNTR)
                {
                    return(ScriptError.NotEnoughParamsRet);
                }

                if (RXFormat == RXStringFormat.RXFInteger)
                {
                    try
                    {
                        measuredFreq = int.Parse(Output[DelimiterCNTR]);
                    }
                    catch
                    {
                        return(ScriptError.UnexpectedOutputFormat);
                    }
                }
            }

            return(ScriptError.NoError);
        }