私の趣味のarduinoプロジェクトでは、私は動的メモリ空間を節約するためにPROGMEMを使用しています。sprintf_Pでpgm_read_wordを使用してください。
私はconstの文字を構築し、配列表にそれらを保存します:
const char KEY[] PROGMEM= "z4PhNX7vuL3xVChQ1m2AB9Yg5.....";
.
.
const char * const MARRAY[7] PROGMEM =
{APN,URL,API,KEY,ACTION,TIMEZONE,IDENT,};
は、今私はsnpritf_P内の文字列を使用したいのですが、このコードは文句を言わない期待どおりに動作:
char * ptr = (char*) pgm_read_word(&MARRAY[0]);
snprintf_P(conv, sizeof(conv), PSTR("AT+SAPBR=3,1,\"APN\",\"%s\""), ptr);
文字列を作成してその文字列にcharをコピーすると、次のように動作します。
char * ptr = (char*) pgm_read_word(&MARRAY[0]);
String buffer [80];
strcpy_P (buffer, ptr);
snprintf_P(conv, sizeof(conv), PSTR("AT+SAPBR=3,1,\"APN\",\"%s\""), buffer);
最初のコードが機能しない理由を私は本当に理解していませんsnprintfは、私が知る限り、通常の文字をまで期待していますか?
ヒント/助けがよかったですが、私は既にArduino PROGMEM Reference を読んでいますが、まだ理解していません。オーストリア
ありがとう、魅力のように動作し、私にバッファ変数を保存します。ダイナミックメモリの10%を節約できました。まだ多くを節約する必要がありますが、それは良いスタートです。 :) 再度、感謝します! –