Open moritaritsuko opened 9 years ago
#6でも述べましたが、
RTC_OutPort_create(obj->m_rtobjRef, "out", "TimedString");
の3番目の引数のデータ型を文字列からTypeCode型に変更しました。そのため、現在は、
RTC_OutPort_create(obj->m_rtobjRef, "out", RTC_TimedString);
とすれば、問題ないと思います。
回答ありがとうございます。
3番目の引数のデータ型を文字列からTypeCode型に変更しました。そのため、現在は、 RTC_OutPort_create(obj->m_rtobjRef, "out", RTC_TimedString); とすれば、問題ないと思います。
指示頂いた通り、ポート生成時のデータ型指定を「"TimedString"」→「RTC_TimedString」に変更して みましたが、コンパイルエラーとなりました。 SampleIN0.c: 関数 ‘Rtc_onInitialize’ 内: SampleIN0.c:87:67: エラー: expected expression before ‘RTC_TimedString’ make: *\ [SampleIN0.o] エラー 1
修正頂いたソースをみると、ポート生成時のデータ型指定が、「RTC_TimedLong」ではなく、 「TC_RTC_TimedLong」となっていたため、同様に、「TC_RTC_TimedString」とすると コンパイルは通りました。
ですが、OpenRTM-aist/OpenRTM-aist-Pythonで作成したRTコンポーネントと、 OpenRTM-aist-Cで作成したRTコンポーネントを起動し、RT System Editorでポート接続しようと しましたが、接続できませんでした。 (接続に関するポップアップ画面が表示されず、禁止マークとなった。)
RT System EditorのプロパティViewで確認すると、 OpenRTM-aist/OpenRTM-aist-Pythonで作成したRTコンポーネントのポート名は、「IDL:RTC/TimedString:1.0」、 OpenRTM-aist-Cで作成したRTコンポーネントのポート名は、「TimedString」でした。 名前が異なるため、ポート接続できないのでしょうか。
修正に関しては、失礼いたしました。TC_RTC_TimedString でOKです。 また、ポートの接続の件ですが、これは、Python版の方がrepository_IDを見せるようになったせいです。 また、SystemEditorも型チェックを厳しくしましたので、ポートの型があっていないと判断しているのだと思います。
これは、バージョン違いのOpenRTMでも発生していた問題で、OpenRTM-aist-C側で対処する必要があるのだと思います。
(#6 で記載したのですが、内容が異なるかと思い、新たにIssueを発行させて頂きました。)
lib\rtm\idl\BasicDataType.idlで定義されているデータ型(たとえば、TimedString)を利用して、 OpenRTM-aist-Python等で作成されたRTコンポーネントとOpen-RTM-aist-Cで作成した RTコンポーネントを接続したい場合、どう対応すればよいのでしょうか。 (OpenRTM-aist-1.0.0(C++)で作成のRTCとの接続OKとのことですが。)
OpenRTM-aist-C(RtORB)で、データポートのデータ型に、「TimedString」を定義して <~.h> RTC_OutPort m_outPort; TimedString m_outData; <~.c> private->m_outPort = RTC_OutPort_create(obj->m_rtobjRef, "out", "TimedString"); コンパイルすると、下記のエラーとなりました。 SampleIN0.h:16:3: エラー: 不明な型名 ‘TimedString’ です