9 years, 6 months ago.

トラ技10月号の記事(P64)で ”printf” が使えない

main.cpp で リスト2 int main() の中に lcd.printf("%+7.2fC ", t); と書くと Error: Class "KuAQM0802A" has no member "printf" in "main.cpp" となって コンパイル 出来ません。 lcd.print("Hello World") なら OKです。 どうすればよいでしょうか?                                         (シミズ君)

Question relating to:

A library for AQM0802A I2C connecting LCD module.

申し訳ありません。こちらにアップロードされているモジュールのバージョンが古く、printfが使えない状態になっています。すぐに修正致しますので、少々お待ちください。

posted by Kunihiko Ohnaka 02 Oct 2014

先ほど修正いたしました。もともと手元ではprintfが使えるようになっていたのですが、その変更をPUSHするのを忘れていました。

※ 他の多くのライブラリ同様、Streamクラスを継承することで printfメソッドが使えるようになっています。

posted by Kunihiko Ohnaka 04 Oct 2014

KuAQM0802A の修正版を Downloadして入れ替えたところ、" KuAQM0802A inherits implicit virtual in "KuAQM0802A/KuAQM0802A.h" というWarning Message が出ますが、compileはsucceed で 正常に温度表示が出来るようになりました。 どうも有難うございました。     (シミズ君)

posted by eichi shimizu 07 Oct 2014

2 Answers

9 years, 6 months ago.

こんにちは。

KuAQM0802Aのライブラリでは、print関数のみがサポートされているようです。

http://developer.mbed.org/users/kunichiko/code/KuAQM0802A/docs/414db8b8aaad/KuAQM0802A_8h_source.html

printf関数のように書式付き出力を使いたい場合は、sprintfで文字列を生成してからそれをパラメータとして、print関数を使えば良いのではないでしょうか。

Thanks for your answer. Then I tried other library because using "sprintf" was a little complicated. I copied "Tetsuya Hoshino” 's library ”AQM0802A" instead of KuAQM0802A, and it was successful. But "lcd.locate(0,0) was not accepted this time. Then I changed "lcd.locate(0,0) into "lcd.home()" and now all troubles have cleared. Thank you Mr. Watari and Mr. Hoshino. (シミズ君)

posted by eichi shimizu 02 Oct 2014
9 years, 6 months ago.

申し訳ありません。こちらにアップロードされているモジュールのバージョンが古く、printfが使えない状態になっています。すぐに修正致しますので、少々お待ちください。

Watarai様のおっしゃるように sprintf を使う方法でも問題ありませんが、printfが使える方が便利かと思いますので、修正致します。

10/4追記:先ほど修正いたしました。もともと手元ではprintfが使えるようになっていたのですが、その変更をPUSHするのを忘れていました。申し訳ありません。