忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[394]  [393]  [392]  [391]  [390]  [389]  [388]  [387]  [386]  [385]  [384
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

もうコメントくれくれなんて乞食みたいなことは言わないので、プロジェクトページ下の評価(星が5つ並んでいるところです)を付けてもらえませんか?
好きな星の数を選ぶだけなので気が向いた人はよろしくおねがいします。


今回も書くことがないので共有メモリによる通信を行うRTCを調べてみました。
以下の2つがあるようです。
  1. 共有メモリを用いたRTコンポーネント間の大容量データ通信
  2. クァッドロータを制御するRTコンポーネント群
他にもあるとは思いますが、ソースコードを読む気力がないのでこれぐらいにしておきます。


まず1について想像半分ですが説明します。
TimedString型のOutPortを持つRTC_AとInPortを持つRTC_Bがあるとします。
RTC_Aで共有メモリの領域の作成、書き込みを行いOutPortから共有メモリの空間名を送信します。そしてRTC_BのInPortで読み込んだ名前で共有メモリを開いてデータの読み込みを行います。多分こんなかんじの動作です。

次に2ですがこのプログラムを書いた人はかなり高度な技術を持っているらしく、ソースコードを読んで動作を理解するのは苦労しました。
まず、自分のRTCで2の共有メモリのポートを利用するためには以下のような記述をします。

宣言
ShmOutPort<long> m_shmOutPort;

初期化
m_shmOutPort("shmOut")

サービスポートの追加
m_shmOutPort.attachTo(*this);

データの書きこみ
m_shmOutPort.write(10);


多分、こんな感じで書けます。
ShmOutPortクラス、ShmInPortクラスはサービスポートm_servicePortを変数として持っています。
ちなみにShmOutPortがコンシュマー、ShmInPortクラスがプロバイダのインターフェースを持つサービスポートになります。

ShmOutPort側のサービスポートのsetShmSegmentID関数で空間名を書き込んで、ShmInPort側でshmSegmentID関数で空間名を取得して共有メモリ空間からデータを読み込むという方法みたいなので、大雑把にいえば1の方法とやりかたは同じです。

ただ1はWindowsAPI、2はBoostのライブラリで共有メモリに関する処理をしているようなので2の方がいろいろなOSで使用できそうですし、1は画像データだけみたいですが2はいろいろなデータを扱える点では汎用性はありそうです。

ただ、2のソフトウェアのプロジェクトページを見たところクァッドロータの制御がメインみたいなのに何故か特徴は共有メモリという風に書いてあります。
ソフトウェア自体のクオリティは高いのだから、せめてクァッドロータで共有メモリによるデータ送信がどのように役立つかを書いておけば良くなるかなあと思わなくもないです。偉そうなことを言ってしまって申し訳ないです。


今年投稿される作品もこんな感じでソースコードを解析するかもしれないので、作った側からしたら不快に思う人もいるかもしれません。
その場合、コメント欄にそう書いてくれたら記事は消しますのでそうしてください。





にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
36
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]