[openrtm-users 01427] Re: Using Coil::timer function
    Ando Noriaki
    n-ando @ aist.go.jp
       
    2010年 10月  8日 (金) 01:22:26 JST
    
    
  
Hello Tony
> Hi all,
> I found a timer class in the coil library and am interested to use it for my
> components in timing my outputs.
> I have looked through the website and information I have, but still couldn't
> really figure out how to declare a listener function and use it with the
> timer class.
> I was wondering if any of you can point me in the right direction or give me
> a simple example?
>
> Thanks heaps in advance.
> Tony
See the following simple example.
You can add a listener object of a class which inherits ListenerBase
pure-virtual class -> (1).
And you can also add any kind of listener objects by using template
function -> (2)
#include <iostream>
#include <coil/Timer.h>
#include <coil/Listener.h>
#include <coil/TimeValue.h>
class MyListener
 : public ListenerBase
{
public:
  virtual void invoke()
  {
    std::cout << "Hello" << std::endl;
  }
};
class MyClass
{
public:
  void hoge()
  {
    std::cout << "HOGE" << std::endl;
  }
};
int main(void)
{
  coil::TimeValue timerinterval(0, 10000);
  coil::Timer timer(timerinterval); // Timer interval is 0.01sec
  MyListener listener;
  MyClass myobj;
  coil::TimeValue interval(1, 0);
  timer.registerListener(&listener, interval); // (1) listener is
ListenerBase's subclass
  timer.registerListenerObj(&myobj, &MyClass::hoge, interval/10); //
(2) any kind class member function can be added by this template
function
  timer.start();
  while (1) ;
}
Then, you will get
HOGE
HOGE
HOGE
HOGE
HOGE
HOGE
HOGE
HOGE
HOGE
HOGE
Hello
HOGE
HOGE
Best Regards,
Noriaki Ando
-- 
Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org
    
    
openrtm-users メーリングリストの案内