Commit 9ae091ce authored by Pavel Vainerman's avatar Pavel Vainerman

Сделал в simitator поддержку задания id в стиле "id@node"

parent 8316f934
...@@ -7,17 +7,18 @@ using namespace UniSetTypes; ...@@ -7,17 +7,18 @@ using namespace UniSetTypes;
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void help_print() void help_print()
{ {
cout << endl << "--help - Помощь по утилите" << endl; cout << endl << "--help - Помощь по утилите" << endl;
cout << "--sid id1,..,idXX - sensors ID (AI,AO)" << endl; cout << "--sid id1@Node1,id2,..,idXX@NodeXX - Аналоговые датчики (AI,AO)" << endl;
cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl; cout << endl;
cout << "--max val - Верхняя граница датчика. По умолчанию 100 " << endl; cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl;
cout << "--step val - Шаг датчика. По умолчанию 1" << endl; cout << "--max val - Верхняя граница датчика. По умолчанию 100 " << endl;
cout << "--pause msec - Пауза. По умолчанию 200 мсек" << endl << endl; cout << "--step val - Шаг датчика. По умолчанию 1" << endl;
cout << "--pause msec - Пауза. По умолчанию 200 мсек" << endl << endl;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
struct IInfo struct ExtInfo:
public UniSetTypes::ParamSInfo
{ {
ObjectId id;
UniversalIO::IOTypes iotype; UniversalIO::IOTypes iotype;
}; };
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -43,27 +44,30 @@ int main( int argc, char **argv ) ...@@ -43,27 +44,30 @@ int main( int argc, char **argv )
cerr << endl << "Use --sid id1,..,idXX" << endl << endl; cerr << endl << "Use --sid id1,..,idXX" << endl << endl;
return 1; return 1;
} }
UniSetTypes::IDList lst1 = UniSetTypes::explode(sid);
std::list<ObjectId> l1 = lst1.getList();
if( l1.empty() ) std::list<UniSetTypes::ParamSInfo> lst = UniSetTypes::getSInfoList(sid,UniSetTypes::conf);
if( lst.empty() )
{ {
cerr << endl << "Use --sid id1,..,idXX" << endl << endl; cerr << endl << "Use --sid id1,..,idXX" << endl << endl;
return 1; return 1;
} }
std::list<IInfo> l; std::list<ExtInfo> l;
for( std::list<ObjectId>::iterator it = l1.begin(); it!=l1.end(); ++it ) for( std::list<UniSetTypes::ParamSInfo>::iterator it = lst.begin(); it!=lst.end(); ++it )
{ {
UniversalIO::IOTypes t = conf->getIOType( (*it) ); UniversalIO::IOTypes t = conf->getIOType( it->si.id );
if( t != UniversalIO::AnalogInput && t != UniversalIO::AnalogOutput ) if( t != UniversalIO::AnalogInput && t != UniversalIO::AnalogOutput )
{ {
cerr << endl << "Неверный типа датчика '" << t << "' для id='" << (*it) << "'. Тип должен быть AI или AO." << endl << endl; cerr << endl << "Неверный типа датчика '" << t << "' для id='" << it->fname << "'. Тип должен быть AI или AO." << endl << endl;
return 1; return 1;
} }
IInfo i; if( it->si.node == DefaultObjectId )
i.id = (*it); it->si.node = conf->getLocalNode();
ExtInfo i;
i.si = it->si;
i.iotype = t; i.iotype = t;
l.push_back(i); l.push_back(i);
} }
...@@ -113,21 +117,21 @@ int main( int argc, char **argv ) ...@@ -113,21 +117,21 @@ int main( int argc, char **argv )
j = amin; j = amin;
cout << "\r" << " i = " << j <<" "<< flush; cout << "\r" << " i = " << j <<" "<< flush;
for( std::list<IInfo>::iterator it=l.begin(); it!=l.end(); ++it ) for( std::list<ExtInfo>::iterator it=l.begin(); it!=l.end(); ++it )
{ {
try try
{ {
if( it->iotype == UniversalIO::AnalogInput ) if( it->iotype == UniversalIO::AnalogInput )
ui.saveValue(it->id, j, UniversalIO::AnalogInput); ui.saveValue(it->si, j, UniversalIO::AnalogInput, DefaultObjectId);
else else
ui.setValue(it->id, j); ui.setValue(it->si, j, DefaultObjectId);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
cerr << endl << "save id="<< it->id << " " << ex << endl; cerr << endl << "save id="<< it->fname << " " << ex << endl;
} }
} }
if(j<=amin) if(j<=amin)
{ {
i = amin; i = amin;
...@@ -138,22 +142,22 @@ int main( int argc, char **argv ) ...@@ -138,22 +142,22 @@ int main( int argc, char **argv )
{ {
i += astep; i += astep;
if(i>amax) // Принудительная установка верхней границы датчика if(i>amax) // Принудительная установка верхней границы датчика
i = amax; i = amax;
cout << "\r" << " i = " << i <<" "<< flush; cout << "\r" << " i = " << i <<" "<< flush;
for( std::list<IInfo>::iterator it=l.begin(); it!=l.end(); ++it ) for( std::list<ExtInfo>::iterator it=l.begin(); it!=l.end(); ++it )
{ {
try try
{ {
if( it->iotype == UniversalIO::AnalogInput ) if( it->iotype == UniversalIO::AnalogInput )
ui.saveValue(it->id, i, UniversalIO::AnalogInput); ui.saveValue(it->si, i, UniversalIO::AnalogInput, DefaultObjectId);
else else
ui.setValue(it->id, i); ui.setValue(it->si, i, DefaultObjectId);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
cerr << endl << "save id="<< it->id << " " << ex << endl; cerr << endl << "save id="<< it->fname << " " << ex << endl;
} }
} }
} }
msleep(amsec); msleep(amsec);
...@@ -162,12 +166,12 @@ int main( int argc, char **argv ) ...@@ -162,12 +166,12 @@ int main( int argc, char **argv )
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
cerr << endl << "(main): " << ex << endl; cerr << endl << "(simitator): " << ex << endl;
return 1; return 1;
} }
catch( ... ) catch( ... )
{ {
cerr << endl << "catch..." << endl; cerr << endl << "(simitator): catch..." << endl;
return 1; return 1;
} }
......
...@@ -4,7 +4,7 @@ ulimit -Sc 1000000 ...@@ -4,7 +4,7 @@ ulimit -Sc 1000000
#for i in `seq 1 20`; #for i in `seq 1 20`;
#do #do
uniset-start.sh -f ./uniset-simitator --confile test.xml --sid 10,16,9 uniset-start.sh -f ./uniset-simitator --confile test.xml --sid 10@localhost,9@3002
#done #done
#wait #wait
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
Name: libuniset Name: libuniset
Version: 1.3 Version: 1.3
Release: alt2.1 Release: alt3
Summary: UniSet - library for building distributed industrial control systems Summary: UniSet - library for building distributed industrial control systems
License: GPL License: GPL
Group: Development/C++ Group: Development/C++
...@@ -213,6 +213,9 @@ rm -f %buildroot%_libdir/*.la ...@@ -213,6 +213,9 @@ rm -f %buildroot%_libdir/*.la
%changelog %changelog
* Tue Jan 31 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt3
- minor fixes in simitator
* Tue Jan 24 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt2.1 * Tue Jan 24 2012 Pavel Vainerman <pv@altlinux.ru> 1.3-alt2.1
- rebuild - rebuild
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment