産総研 清水です。
SimpleIOのデータ型をTimedDoubleSeqにして、
length(1)のデータの送受信をしてみましたが、
こちらでは問題ありませんでした。
ミドルウェアのバグかどうか切り分けのために、
お手数ですが、SimpleIOを以下のように改造して、
試してみて頂けないでしょうか?
もし、これで同様の症状が出るようであれば、
具体的な使用方法等を御報告ください。
[テストコード]
- ConsoleIn:
RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id){
m_out.data.length(1);
m_out.data[0] = ((double)dummy)/1000.0;
m_outOut.write(m_out);
dummy++;
return RTC::RTC_OK;
}
- ConsoleOut:
RTC::ReturnCode_t ConsoleOut::onExecute(RTC::UniqueId ec_id){
m_inIn.read();
if(m_in.data.length() != 1) return RTC::RTC_ERROR;
std::cout << "Received: " << m_in.data[0] << std::endl;
return RTC::RTC_OK;
}
On Wed, 28 Nov 2007 23:31:17 +0900
Shinichiro NAKAOKA wrote:
>
> 産総研の中岡です。
>
> OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
> TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょうど1
> のときに、ポート間で正しくデータがやりとりされません。(ゴミのような値に
> なってしまいます。)
>
> 同じプログラムで長さが2以上の場合、正常に動作します。
>
> OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
> よろしくお願いします。
>
>
産総研の中岡です。
OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょうど1
のときに、ポート間で正しくデータがやりとりされません。(ゴミのような値に
なってしまいます。)
同じプログラムで長さが2以上の場合、正常に動作します。
OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
よろしくお願いします。