8.1 CMake
ここまでの作業でConsoleConvertFloatの雛型が生成されました。
次の作業としてCMakeを利用してビルド環境のConfigureを行います。
[3.1 CMake]と同じ手順でCMakeを行ってください。
8.2 ひな型作成時の宣言とプログラムの変数の関係
・データポート
OpenRTPで設定したポート名と変数名は、C++のプログラムでは以下の変数名で定義されます。
InPort |
ポート名 |
m_変数名In |
変数名 |
m_変数名 |
OutPort |
ポート名 |
m_変数名Out |
変数名 |
m_変数名 |
ポート名はビルドビューで使用されます。
そのため、このプログラムでは以下の変数名で定義されています。
インポート名 |
m_infloatIn |
インポート変数名 |
m_infloat |
アウトポート名 |
m_outfloatOut |
アウトポート変数名 |
m_outfloat |
今回OpenRTPで指定したポートの変数はRTC::TimedFloat型になります。
RTC::TimedFloat型は、以下の構造体で定義されています。
データ型 |
変数 |
意味 |
float |
data |
floatの値 |
RTC::time |
tm |
タイムスタンプ |
floatの値を代入するには、以下のように記述します。
m_infloat.data=1.5
m_outfloat.data=1.5
・コンフィギュレーション
コンフィギュレーションはC++では以下の変数名で定義されます。
そのため、このプログラムではm_valueで定義されています。
8.3 VisualStudioでソースコードを編集
先ほど指定したbuildディレクトリの中のConsoleConvertFloat.slnをダブルクリックしてVisual Studioを起動します。
起動後、ConsoleConvertFloat.cppを開き、onActivated(), onDeactivated(), onExecute()を実装します。
onActivated()
RTC::ReturnCode_t ConsoleConvertFloat::onActivated(RTC::UniqueId ec_id)
{
std::cout<<" ConsoleConvertFloat onActivated" << std::endl;
return RTC::RTC_OK;
}
onDeactivated()
RTC::ReturnCode_t ConsoleConvertFloat::onDeactivated(RTC::UniqueId ec_id)
{
std::cout << " ConsoleConvertFloat onDeactivated" << std::endl;
return RTC::RTC_OK;
}
onExecute()
RTC::ReturnCode_t ConsoleConvertFloat::onExecute(RTC::UniqueId ec_id)
{
float value = 0;
if (m_infloatIn.isNew())
{
m_infloatIn.read();
value = m_infloat.data * m_value;
std::cout << m_infloat.data << " * " << m_value << std::endl;
m_outfloat.data = value;
m_outfloatOut.write();
}
return RTC::RTC_OK;
}
編集を終えたら保存をしてください。
以下のように右クリックでコンポーネントのビルドをするか、画面上部の[BUILD]から[Build Solution]を選択してビルドをしてください。ビルドが終了すればコンポーネントが生成されます。
C:\rtcws\ConsoleConvertFloat\build\src\Debug に生成されたConsoleConvertFloatComp.exeをダブルクリックで起動させます。
問題なく起動できることを確認してください。