OpenRTM / OpenRTP-aist

OpenRTP-aist: RT-Middleware and OMG RTC based component and system development tools implemented by AIST
Other
1 stars 6 forks source link

RTCから取得したインターフェース型名の前方の空白を削除する #508

Closed Nobu19800 closed 1 year ago

Nobu19800 commented 1 year ago

Is your feature request related to a problem? Please describe. OpenRTM-aist Python版では、ポートプロファイルのdataport.interface_type等を取得すると、以下のように型名の前にスペースが入る。

corba_cdr, csp_channel, data_service, direct, shared_memory

RT System Editorでの接続時に、DataConnectorCreaterDialog.okPressed関数で、連想配列にスペースが入っている名前でキーを設定して、スペースが入っていない名前で要素を取得しようとしてエラーになる。

Describe the solution you'd like エラーが出ないようにする。

Describe alternatives you've considered Python版についてはスペースが入らないように修正を加えるが、最初期のリリースからスペースが入っていたようなので、RT System Editor側で空白を削除するように変更する。 念のため、インターフェース型以外の項目でも問題が無いかを確認する。

Additional context

ga-sakamoto commented 1 year ago

上記のご指摘なのですが,どこを修正すれば良いのかが不明でした.

DataConnectorCreaterDialog内では,ポートプロファイルを取得する際に,SDOUtilのgetValueListを呼び出しており,こちらのメソッドの中で,valueの内容にスペースが含まれている場合には,削除するようにしています. (DataConnectorCreaterDialogでは,okPressed関数を呼び出す前に,loadData関数でポートプロファイルを取得しており,こちらで上記の関数を呼び出しています)

ご指摘の内容から,DataConnectorCreaterDialogのokPressed関数内に何か処理を追加しようとされたのでしょうか? もしもそうであれば,loadData関数内で行っているような処理を実行して頂けば,空白が入っていない情報が取得できると思います. (ご指摘の内容を勘違いしておりましたら,申し訳ございません)

Nobu19800 commented 1 year ago

okPressed関数に処理を追加しようとはしてません。念のため、OpenRTPのmasterブランチのソースコードを使って動作確認しました。以下のようにokPressed関数内でpropertyListを確認しました。

    protected void okPressed() {
        String ifType = interfaceTypeCombo.getText();
        for (String key : propertyList.keySet()) {
            System.out.println("\""+key+"\"");
        }

その結果は以下の通りで、corba_cdr以外にはスペースが入っています。

" direct"
" data_service"
"corba_cdr"
" csp_channel"
" shared_memory"

おそらく、SDOUtilのgetValueList関数で削除している空白は、全てのインターフェース型(corba_cdr, csp_channel, data_service, direct, shared_memoryの文字列)の先頭の空白だと思いますので、コンマで区切った後の文字列の空白は削除されていないようです。

ga-sakamoto commented 1 year ago

ご説明ありがとうございました. SDOUtilのgetValueList関数では,前後の空白ともに削除できておりました. ただ,別の箇所でポートプロファイルを取得する際に,スペースを削除していなかったので,その部分を修正させて頂きました.