我正在尝试解析从我创建的arduino机器人获得的数据。我目前已经启动并运行了我的串行程序,并且我能够监控我的计算机发送和接收的数据。
我试图从机器人获取的数据包括:速度、距离和航向。从arduino发送的数据是浮点数。
我使用单个字符来表示正在接收的数据是S、R或H。例如: R150.6
这将表示这是范围数据,150.6将是用于更新程序的新范围。
由于这是我的第一个c#程序,我在尝试找出使用c#解析它的最佳方法时有点卡住了。
我尝试过使用类似的代码:
if (RxString[0] == 'R')
Range = double.Parse(RxString);我在网站上读到使用正则表达式,但我很难弄清楚如何将其合并到我的代码中。
这是我用于指导的链接:
发布于 2012-07-04 02:15:18
你就快到了。如果您总是以单个字母开头,请尝试Range = double.Parse(RxString.Substring(1))。它将从第二个字符开始读取。
发布于 2012-07-04 02:23:03
我可以使用正则表达式来查找double:
\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-04 02:24:42
由于您知道返回数据的格式,因此可以尝试如下所示
data = RxString.SubString(0,1);
value = RxString.SubString(1, RxString.Length-1);
if(data == "R")
range = double.Parse(value);https://stackoverflow.com/questions/11316711
复制相似问题