2

我正在尝试解析从我创建的 arduino 机器人获得的数据。我目前有我的串行程序启动并运行,我能够监控我的计算机发送和接收的数据。

我试图从机器人获得的数据包括:速度、范围和航向。从 arduino 发送的数据是浮点数。

我使用单个字符来表示通过 S、R 或 H 接收的数据是什么。例如:R150.6

这表示这是范围数据,而 150.6 将是更新程序的新范围。

我在试图找出使用 c# 解析它的最佳方法时有点卡住,因为这是我的第一个 c# 程序。

我尝试使用类似的代码:

if (RxString[0] == 'R')
            Range = double.Parse(RxString);

我在网站上阅读使用正则表达式,但是我很难弄清楚如何将它合并到我的代码中。

这是我用来指导的链接:

字符串解析,提取数字和字母

4

3 回答 3

4

您快到了。如果您总是以单个字母开头,请尝试Range = double.Parse(RxString.Substring(1)). 它将从第二个字符开始读取。

于 2012-07-03T18:15:18.400 回答
0

我可以使用正则表达式来查找双精度:

\d+([,\.]\d+)?

使用:

Regex re = Regex.Match("R1.23", "\d+([,\.]\d+)?");
if (re.Success)
{
     double @double = Convert.ToDouble(re.Value, System.Globalization.CultureInfo.InvariantCulture);
}

如果您的字母在字符串中迁移或添加其他符号,它保证从字符串中获取第一个小数

于 2012-07-03T18:23:03.023 回答
0

既然你知道返回数据的格式,你可以试试这样的

data = RxString.SubString(0,1);
value = RxString.SubString(1, RxString.Length-1);

if(data == "R")
  range = double.Parse(value);
于 2012-07-03T18:24:41.963 回答