2

作成したarduinoロボットから取得したデータを解析しようとしています。現在、シリアルプログラムを起動して実行しており、コンピューターで送受信されるデータを監視できます。

私がロボットから取得しようとしているデータには、速度、範囲、および進行方向が含まれます。arduinoから送信されるデータはfloatです。

受信しているデータがS、R、またはHのいずれかであることを示すために、1文字を使用します。例:R150.6

これは、これが範囲データであり、150.6がプログラムを更新するための新しい範囲であることを示します。

これは私の最初のc#プログラムであるため、c#を使用してこれを解析するための最良の方法を見つけようとして少し立ち往生しています。

私は次のようなコードで試しました:

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

正規表現を使用するためにサイトを読んでいますが、それをコードに組み込む方法を理解するのに苦労しています。

これは私がガイダンスに使用していたリンクです:

文字列の解析、数字と文字の抽出

4

3 に答える 3

4

もうすぐです。常に1文字で始める場合は、を試してくださいRange = double.Parse(RxString.Substring(1))。2番目の文字から読みます。

于 2012-07-03T18:15:18.400 に答える
0

正規表現を使用して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-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 に答える