私は、一連のテキストをシリアルに出力するボードを持っています。私はこれらの文章を私が知っているものと比較する必要があります。基本的には、私はstrcmp(thestring,F("knownstring"))
をしたいと思いますが、FlashStringHelper *タイプをとるstrcmpのバージョンはないようです。 const PROGMEM char *
を使用するstrcmp_Pがありますが、これはまったく別のものです。私が見たArduinoのフォーラムスレッドの誰かが、progmem_read_byte (b, i)
というフラッシュストリングを使って書き込むことを提案しましたが、その関数は実際には存在せず、最も近い同等物(pgm_read_byte(b+i)
)はFlashStringHelper * error: invalid use of incomplete type 'class __FlashStringHelper'
とerror: forward declaration of 'class __FlashStringHelper'
、これは私が何かをしたことを意味する真剣に間違って!私はほとんど諦めて、代わりにRAMに文字列を入れていますが、arduinoにはそれほど多くはないので、可能ならばそれを避けたいと思います。誰も助けることができますか?Arduinoで__FlashStringHelper *とchar *を比較するにはどうすればよいですか?
1
A
答えて
2
__FlashStringHelper
は、フラッシュ文字列の正しいオーバーロードされた関数/メソッドを判断するために使用される特別なデータ型です。
とにかくあなたはそれがRAMで2つの文字列を比較するためだとしてstrcmp
を使用していますが、(この順番で)FLASHメモリに置かconst char *
とRAMに置かれconst char *
を比較するためのその変異strcmp_P
がある<avr/pgmspace.h>
含んですることはできません。
strcmp_p(thestring, (const char*)F("knownstring"));
// or better:
strcmp_P(thestring, PSTR("knownstring"));
F
マクロは基本的に次のとおりです:
だから、どちらかを使用することができます(__FlashStringHelper *)PSTR("...")
ので、それはだ少し冗長最初のケースでconst char*
に戻ってそれをキャストします。
関連する問題
- 1. 文字列とchar str [MAXCHAR]を比較するにはどうすればよいですか?
- 2. intポインタとcharポインタを比較するにはどうすればよいですか?
- 3. クラスのインスタンスとC++のchar *変数を比較するにはどうすればよいですか?
- 4. パスワードとパスワードを比較するにはどうすればよいですか?
- 5. ダイクストラとA *を比較するにはどうすればよいですか?
- 6. arraylistの文字列とchar型の配列を比較するにはどうすればいいですか
- 7. WiXのレジストリバージョンを比較するにはどうすればよいですか?
- 8. Boost Geometriesを比較するにはどうすればよいですか?
- 9. Java - ジェネリック型を比較するにはどうすればよいですか?
- 10. LibGDX PolygonShapesを比較するにはどうすればよいですか?
- 11. char *とNSStringを比較するには?
- 12. Haskell - IO Charとcharを比較する
- 13. 文字列が等しいかどうか比較するにはどうすればよいですか?
- 14. charを "*"と比較できないのはなぜですか?
- 15. charをregexpと比較することはできますか?
- 16. P/InvokeでSiverlight 5とFullTrustでXBAPを比較するにはどうすればよいですか?
- 17. 文字がNULLかどうかを比較するにはどうすればよいですか?
- 18. 文字を数値と比較するにはどうすればよいですか?現在のプログラムでC++
- 19. arduino unoでデジタルピンをプログラムするにはどうすればよいですか?
- 20. Neo4jでノードのラベルをCypherと比較するにはどうすればよいですか?
- 21. SimpleDateFormatと表示通知で保存日時を比較するにはどうすればよいですか?
- 22. C#で静的イベントと非静的イベントを比較するにはどうすればよいですか?
- 23. Rubyで月と年の組み合わせを比較するにはどうすればよいですか?
- 24. Javaのswitch文でstringとenumを比較するにはどうすればよいですか?
- 25. VB.NETでDateとDateTimeを比較するにはどうすればよいですか?
- 26. このように2つの文字列を比較するにはどうすればよいですか?
- 27. これらのデータセットをcsvと比較するにはどうすればよいですか? Python 2.7
- 28. データフレームと重複とベクトルを比較するにはどうすればよいですか?
- 29. ユーザー入力(std :: cinから)を文字列と比較するにはどうすればよいですか?
- 30. 2つの配列を要素ごとに比較するにはどうすればよいですか?