2016/10/02

[arduino]Streamクラスでも出力できる

作ろうとしているArduinoのライブラリだが、シールドもある。

シールドとシリアル通信するのだが、インターフェースはまだ決まってない。
そういうときはArduinoのStreamクラスを使う、と書いてあった。

しかし、Streamクラスのリファレンスを見ても、read()はあるけどwrite()がない。
これじゃ使えんじゃないか!と、とりあえずHardwareSerialとかにして実装を進めていた。

 

それとは別で、Arduinoの他の人が作ったソースを読んでいたのだが、あれ・・・Streamでprint()を使っている・・・。
APIの説明に書いていないということは、隠しインターフェースか!?と一人で盛り上がっていたのだが、上記のリンク先にちゃんと「print()などはPrintクラスを継承している」と書いてあるではないか・・・。

じゃあPrintクラスってどういうのだろうか、と調べようとしたが、こっちはリファレンスに出てこない。
ZIPファイルの、hardware\arduino\avr\cores\arduino\Print.hがそれのようだ。
うん、print()、println()だけじゃなく、write()もある。
ポインタとサイズを引数に取っているから、普通に使えそうだ。

 

この辺は、ちょっとわかりづらいと思う。
せめて、Printクラスのリファレンスも用意してくれるとよいのだけどなぁ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。