[openrtm-users 00901] Re: OpenRTM1.0.0-RC1 の OutPort に値が格納できない不具合

Ando Noriaki n-ando @ aist.go.jp
2009年 8月 3日 (月) 14:30:14 JST


俵様

安藤です

>
> rtm/OutPort.hによると
> その後の処理で
> conn_sizeが0以下の場合
> m_connectors[i]->write(m_cdr);
> のループ処理に至らないということで
> 同じ結果になると思われます。
> 以上です。

Aug 03 10:50:00 TRACE: steer: getConnectorProfiles(): size = 1

でも、ログ↑にあるように、m_connectors.size() は1を返していますよね。

write()関数の先頭部分で
size_t conn_size(m_connectors.size());
のように代入しているので、conn_sizeは1になりそうな気がしますが。

念のため、OutPort.h の write() の後半を以下のように書き換えて
ログを見てみてはどうでしょうか?

      bool result(true);
   RTC_PARANOID(("0: conn_size = %d", conn_size));
   RTC_PARANOID(("0: connectos.size() = %d", m_connectors.size()));
      for (size_t i(0), len(conn_size); i < len; ++i)
        {
          ReturnCode ret;
          ret = m_connectors[i]->write(m_cdr);
      RTC_PARANOID(("1: conn_size = %d", conn_size));
      RTC_PARANOID(("1: connectos.size() = %d", m_connectors.size()));
          if (ret != PORT_OK)
            {
              result = false;
              if (ret == CONNECTION_LOST)
                {
                  disconnect(m_connectors[i]->id());
                }
            }
        }
   RTC_PARANOID(("2: conn_size = %d", conn_size));
   RTC_PARANOID(("2: connectos.size() = %d", m_connectors.size()));
      return result;


あと、ためしにコンポーネントのソースを送ってみてもらえますか?
-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                  TEL: 029-861-5981 FAX: 029-862-6631
                  n-ando @ aist.go.jp, n-ando @ ieee.org



openrtm-users メーリングリストの案内