June 20, 2009

シリアルポートをstd::iostreamと同等にMacOSXでも扱う

以前、Windowsでのシリアルポートの読み書きを、C++で標準的な入出力インターフェイスであるiostreamと等価的に扱うためのヘッダを『シリアルポートをstd::iostreamと同等に扱う』という記事で公開しましたが、その後、MacOSXにも対応させました。ことの経緯としては、MacOSXから猫カメラの情報を搭載されたBluetoothで読み出したい(Bluetoothはシリアルポートとして認識されています)ということがあり、対応した次第です。おそらくLINUX/UNIXでも使えると思います。

ということで、最新版のヘッダcomstream.hです。

上記にあげた以前の記事では、*NIX系ならシリアルポートはファイルと等価に扱えるので、特に苦労はしない、のような話を書きました。しかしながら、読み書きの前にボーレートの調整やタイムアウトの設定など、初期化についてはそれなりにやることがあるようなので、やはりヘッダにまとめておいたほうが便利だと思います。そういう意味でもこのヘッダの価値はあるのではないかと思います。

それにしてもiostreamは良くできたクラスだと思います。バッファリングのなし、ありの両方において拡張性が確保されているので、シリアルポートといったハードウェア絡み(ブロッキング動作なのでバッファなしのことが多いと思います)から、プロトコル実装といったソフトウェアアルゴリズム(通常ノンブロッキング動作なのでバッファありが多いと思います)まで、このクラス群ひとつで幅広く対応できてしまうのが素敵です。

17:17 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/706
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。