2017-09-29 11 views
0

私は引数としてbyte型を取らなければならないArduino関数を持っています。アルドゥイーノでは、byte*は​​次のコードは、どのような私である私は、変数に入れ、A0433.22を抽出したいA0:433.22符号なし文字でのシンボルの位置を検索し、インデックス間の内容を抽出しますか?

のようなもの、など

になりますまた、unsigned char*

// payload is A0:433.33 

void someFunction(byte* payload) { 

    char* pos; 
    pos = strstr(payload, ":"); 
    // want to eventually end up with a variable containing 'A0' 
    // and another containing '433.33' 

} 

です:の位置を見つけようとしました。 strstrconst char*でのみ動作し、unsigned char*では動作しないため、動作しません(コンパイラからエラーが返されます)。私はそのインデックス位置を使用して、0とインデックス(A0)の間にあるものを抽出しました。インデックスとアレイの合計長さの間には何か(433.22)です。

unsigned char*から「部分」を抽出するために私が何を使用するかもわかりません。文字列の場合は、おそらくsubstrを使用します。

+0

私はそのペイロードをどのように作成するのか分かりませんが、通常の文字列メソッドを使用するには、おそらくreinterpret_cast を使用できます。 – Michel

+0

ペイロードは '\ 0'で終了しますか? – JimmyB

+0

@JimmyB、そうだね。私はここでライブラリを使用しています:https://pubsubclient.knolleary.net/api.html#callback – fuzzybabybunny

答えて

0

payload変数の正確な内容に応じて、単にcharにキャストして標準の文字列関数を適用するとよいでしょう。

example hereがあります。

関連する問題