忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[321]  [320]  [319]  [318]  [317]  [316]  [315]  [314]  [313]  [312]  [311
×

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

Yahoo!コミックでバキSAGAが50ページ立ち読みできるみたいですよ.

・・・うん,これはある意味18禁ですね.






いつもの記事の本筋とは一切関係ない前置きはおいといて,今回はTimedWString型を使ってみます.

これも使ってるRTCを見たことないんだよな.


今回のサンプルはここからダウンロードできます.

今回作ったサンプルはTestWStringOutコンポーネントとTestWStringコンポーネントです.


まずTestWStringOutですが,1つのアウトポート(TimedWString型)を持っており,適当な文字列を出力します.

TestWStringは1つのインポート(TimedWString型)と4つのアウトポート(TimedString型)を持っています.


前回のサンプルと同じく,インポートから入力された文字列を名詞,動詞,形容詞,形容動詞に分けます.

そして,名詞なら名詞のなかからランダムで選択した名詞をアウトポートからTimedString型で出力します.

他も同じです.

・・・まあ,サンプルなので役に立つかどうかは考えてません.

なぜTimedString型かというと,OpenHRIの音声合成コンポーネントと接続するためです.

OpenHRIを解説してるサイトもあるようです.



以下のように接続できます.

Wstring.PNG





TestWStringコンポーネントのアウトポートを繋ぎかえることで名詞か動詞か形容詞か形容動詞を発声させるかを決めれます.



今回作成したRTCのコードを見ていきます.


TestWStringOutコンポーネントのonExecute関数は以下のようになってます.


m_out.data = L"(省略)"  //データを書き込む
m_outOut.write();  //出力
return RTC::RTC_OK;


かなり簡単になりましたね.


続いてTestWStringコンポーネントのonExecute関数です.


setlocale( LC_ALL, "Japanese" );
   
if (m_inIn.isNew())
{
        m_inIn.read(); //データ読み込み
        std::wstring text = m_in.data; //データを取り出す
        std::wstring noun;
        std::wstring verb;
        std::wstring adjective;
        std::wstring na_adjective;

        getnoun(text,text.length(),&noun,&verb,&adjective,&na_adjective); //名詞,動詞,形容詞,形容動詞に分けてランダムで選択したものをそれぞれnoun,verb,adjective,na_adjectiveに格納
        std::wcout << text << std::endl; //入力データの表示

        BYTE* nounUtf8; //8ビットに変換した名詞の文字列
        UTF16utf8((BYTE*)noun.c_str(), &nounUtf8); //16ビットから8ビットに変換
        m_noun.data = (char*)nounUtf8; //データを書き込む
        m_nounOut.write(); //出力




以下略


となってます.

WStringを表示するときはstd::coutではなく,std::wcoutを使います.

OpenHRIはUTF-8でしか受け付けてくれないので,UTF-16から変換します.

コンフィグレーション・パラメータとかでUTF-8かShift-JISか選べたら便利だと思ったり思わなかったりですね.





今日はこのぐらいにしときます.

次回何やるかは未定です.

ExtendedDataTypes.idlとかInterfaceDataTypes.idl見ても,面白いデータ型はあるけど「これ絶対使わないだろ」ってのは見た感じないしなぁ.

コネクタの設定をいぢくってみるか,それともソースをいぢくってみるか,はたまたOpenRTM.NETに手を伸ばすか考え中です.








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

人気ブログランキングへ
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
03 2024/04 05
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
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]