0

関数 debug_print(fmt, args) が必要です。これは、フォーマット文字列、引数を受け取り、UART に送信できる char バッファーを作成します。基本的に、これらすべてを scanf に渡すことができますが、問題は、浮動小数点数をフォーマットするために特別な注意が必要なことです。

dtostrf( float_num, 3, 4, temp_buf );

%fしたがって、 in format stringに置き換え、 %sfloat arg を に変更する必要がありtemp_bufます。組み込み環境の機能が限られているため、これらすべてを最小限の手順で実行する必要があります。

誰かがそのような機能を構築するのを手伝ってくれれば幸いです。

このようなもの:

void debug_print(char *fmt, ... )
{
    va_list args;
    va_start(args,fmt);
    // use uart function for output
    va_end(args);
}

しかし、プレースホルダーを効果的に反復する方法と、floatarg をに置き換える方法はchar*?

4

1 に答える 1

0

渡された文字列が実際にリテラル文字列である場合は不可能なフォーマット文字列を変更する代わりに、関数"%f"を使用して次の引数を変換dtostrfし、一時的な小さな文字列に値を格納してから、それを連結します出力文字列 (つまりstrcat)。

于 2012-11-29T11:55:25.943 に答える