2011-12-21 8 views
0

ハードウェアデバイスとやりとりするためにC++クラスがあるかどうかは、Serial、ParallelなどのI/Oトラフポートやそのようなものがあるのだろうかと思っていました。C++ハードウェア開発

私はいくつかの情報を見つけましたが、C言語でしか見つかりませんでした。既に書かれたC++クラスがあることを願っています。

+1

なぜcの代わりにcppを使用したいのですか?彼らは異なっていますが、それらは似ています。あなたが1つを知っていれば、あなたはまともなレベルで他を知っている可能性があります。 – ScarletAmaranth

+3

[Boost.Asio](http://www.boost.org/doc/libs/release/doc/html/boost_asio/reference.html)はシリアルポートをサポートしています。 –

+1

@ScarletAmaranth:その意味はC++からCへのみ影響しますが、それ以外の方法ははるかに難しいです。 –

答えて

3

組み込みハードウェアは通常は独自仕様なので、このようなライブラリには何らかの種類のハードウェア抽象化レイヤーが必要です(これはCとC++の両方に当てはまります)。 UARTとGPIOは比較的簡単ですが、同時にチップ固有であり、アプリケーション固有の要件もありますので、そのようなライブラリの有用性は疑問です。

これらのリソースに共通の抽象インターフェースを定義して、アプリケーション層コードをプラットフォーム間で移植できるようにすることは有益かもしれませんが、使用可能な汎用インターフェースはすべてあなたの要件に合うかもしれません。したがって、他の人の実装に制約されることなく、独自のデザインを実装して再利用する方が良い場合がよくあります。

適切なCライブラリを見つけることができれば、最も簡単な方法は適切なC++ラッパーを実装することです。 CコードはC++と完全に相互運用可能です。

プラットフォーム用の標準Cライブラリが、UARTなどのデバイスでstdioをサポートするように移植されている場合、標準のC++ iostreamライブラリは機能しますが、フレーミングとボーレートを設定するための標準の低レベルインタフェースは提供されません。直接またはカスタムのioctl()コマンドを使用して実装することができます。ストリームI/Oのセマンティクスが適切であれば、他のデバイスやファイルシステム用の低レベルドライバを実装して、iostream経由でアクセスできるようにすることができます。

1

答えはターゲットプラットフォームによって異なります。 http://www.arduino.cc/はすべてのI/OをC++でラップします。

関連する問題