10 years, 11 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

10 years, 11 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
10 years, 11 months ago.

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

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

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