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