産総研の松坂です。
前回メールに不具合が起こる場合のソースをつけていなかったので、添付して送ります。
OpenRTM-aist 1.0.0RC1 Python版付属のサンプルコードを少し書き換えてUTF-8文字列を
送ろうとしているのですがcdrMarshalエラーが出ます。
前回メールを出した後で
[openrtm-users 00503] ポートの型による処理速度の差異
の一連の議論を読み返したのですが、wchar型もwstring型も文字列を送るという本来の
目的では生かしておいてほしいように思います(遅い反応ですいません)。
国際化文字列を送るという目的を考えると上記議論で問題となったパフォーマンスに
影響するコード変換機能も本来はありがたい機能です。
とはいえcharという名前は、8bitデータ型として誤解されやすいので、例えば新しい
TimedChar型はTimedOctet型と等価にして、より誤解の少なそうな名前(TimedCharacterとか)
を現在のTimedChar型と等価なものとして新しくに新設するなどして検討いただけると
ありがたいのですが、どうでしょうか?
ユーザ型で解決してしまっても良いのですが、国際化文字列の送受信は非常によく使われる機能だと
思うので何か共通のプロトコルがあった方が良いように思います。
2009/11/25 Yosuke Matsusaka :
> OpenRTM-aist開発者の皆様
>
> 産総研の松坂です。
>
> ポートの間でやり取りされるデータ型は、BasicDataType.idlで定義されていると思うのですが、
> データ型の中にwcharとwstringをサポートするデータ型を例えばTimedWCharやTimedWString
> などの形で追加することはできませんでしょうか?
>
> 国際化文字列は現在のTimedString型でも無理矢理通信できてしまうのですが、上記のwstring型を
> 使う方がより正規の(?)方法のようです。
>
> 国際化文字列を無理矢理通信する方法はC++では使えたのですが、Pythonでは普通のやり方では
> 送信側にcdrMarshalエラーが出てしまうようで、うまい方法はないかと思っています。
OpenRTM-aist開発者の皆様
産総研の松坂です。
ポートの間でやり取りされるデータ型は、BasicDataType.idlで定義されていると思うのですが、
データ型の中にwcharとwstringをサポートするデータ型を例えばTimedWCharやTimedWString
などの形で追加することはできませんでしょうか?
国際化文字列は現在のTimedString型でも無理矢理通信できてしまうのですが、上記のwstring型を
使う方がより正規の(?)方法のようです。
国際化文字列を無理矢理通信する方法はC++では使えたのですが、Pythonでは普通のやり方では
送信側にcdrMarshalエラーが出てしまうようで、うまい方法はないかと思っています。