User Tools

Site Tools


for_developers:signal_live_monitoring

This is an old revision of the document!


Live Monitoring of Signals

Overview

With the following method a signal can be monitored while the application is running.

But this method should be used with caution, because it ca degrade the real time performance of the system. For this reason only one or two signals can be monitored at a time, if the real time performance is needed.

To keep the real time performance on an acceptable level, std:cout and std:endl should only be used once!

Implementation

The following example adds a periodic task which once each 1000 times outputs two attributes:

  • the maximum period of the task
  • a signal from the control system
...
 
eeros::task::Periodic td("control system",dt, timedomain);
 
td.monitors.push_back([&](eeros::PeriodicCounter &c, Logger<LogWriter> &log) {
	static int count = 0;				
 
	if (++count < 1000) return;		
	count = 0;
 
	eeros::PeriodicCounter counter = c;
	c.reset();
	std:cout 	<< "CS: period max: " << setw(7)  << counter.period.max*1000
			<< "   ActPos Robot: " << dirKin.getOut().getSignal().getValue()	// vector with 2 elements
			<< std::endl;
});
 
eeros::Executor::instance().add(td);
 
...
for_developers/signal_live_monitoring.1479798134.txt.gz · Last modified: 2016/11/22 08:02 by graf