Commit ce1a189a authored by Pavel Vainerman's avatar Pavel Vainerman

(SImitator): добавил возможность указывать и AO датчики (не только AI)

parent 38f268e1
...@@ -8,13 +8,19 @@ using namespace UniSetTypes; ...@@ -8,13 +8,19 @@ using namespace UniSetTypes;
void help_print() void help_print()
{ {
cout << endl << "--help - Помощь по утилите" << endl; cout << endl << "--help - Помощь по утилите" << endl;
cout << "--sid id1,..,idXX - sensors ID (AnalogInput)" << endl; cout << "--sid id1,..,idXX - sensors ID (AI,AO)" << endl;
cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl; cout << "--min val - Нижняя граница датчика. По умолчанию 0" << endl;
cout << "--max val - Верхняя граница датчика. По умолчанию 100 " << endl; cout << "--max val - Верхняя граница датчика. По умолчанию 100 " << endl;
cout << "--step val - Шаг датчика. По умолчанию 1" << endl; cout << "--step val - Шаг датчика. По умолчанию 1" << endl;
cout << "--pause msec - Пауза. По умолчанию 200 мсек" << endl << endl; cout << "--pause msec - Пауза. По умолчанию 200 мсек" << endl << endl;
} }
// -----------------------------------------------------------------------------
struct IInfo
{
ObjectId id;
UniversalIO::IOTypes iotype;
};
// -----------------------------------------------------------------------------
int main( int argc, char **argv ) int main( int argc, char **argv )
{ {
try try
...@@ -30,7 +36,6 @@ int main( int argc, char **argv ) ...@@ -30,7 +36,6 @@ int main( int argc, char **argv )
uniset_init(argc, argv, "configure.xml" ); uniset_init(argc, argv, "configure.xml" );
UniversalInterface ui; UniversalInterface ui;
UniSetTypes::IDList lst;
string sid(conf->getArgParam("--sid")); string sid(conf->getArgParam("--sid"));
if( sid.empty() ) if( sid.empty() )
...@@ -38,15 +43,31 @@ int main( int argc, char **argv ) ...@@ -38,15 +43,31 @@ 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;
} }
lst = UniSetTypes::explode(sid); UniSetTypes::IDList lst1 = UniSetTypes::explode(sid);
std::list<ObjectId> l = lst.getList(); std::list<ObjectId> l1 = lst1.getList();
if( l.empty() ) if( l1.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;
for( std::list<ObjectId>::iterator it = l1.begin(); it!=l1.end(); ++it )
{
UniversalIO::IOTypes t = conf->getIOType( (*it) );
if( t != UniversalIO::AnalogInput && t != UniversalIO::AnalogOutput )
{
cerr << endl << "Неверный типа датчика '" << t << "' для id='" << (*it) << "'. Тип должен быть AI или AO." << endl << endl;
return 1;
}
IInfo i;
i.id = (*it);
i.iotype = t;
l.push_back(i);
}
int amin = conf->getArgInt("--min", "0"); int amin = conf->getArgInt("--min", "0");
int amax = conf->getArgInt("--max", "100"); int amax = conf->getArgInt("--max", "100");
if( amin>amax ) if( amin>amax )
...@@ -92,15 +113,18 @@ int main( int argc, char **argv ) ...@@ -92,15 +113,18 @@ int main( int argc, char **argv )
j = amin; j = amin;
cout << "\r" << " i = " << j <<" "<< flush; cout << "\r" << " i = " << j <<" "<< flush;
for( std::list<ObjectId>::iterator it=l.begin(); it!=l.end(); ++it ) for( std::list<IInfo>::iterator it=l.begin(); it!=l.end(); ++it )
{ {
try try
{ {
ui.saveValue((*it), j, UniversalIO::AnalogInput); if( it->iotype == UniversalIO::AnalogInput )
ui.saveValue(it->id, j, UniversalIO::AnalogInput);
else
ui.setValue(it->id, j);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
cerr << endl << "save id="<< (*it) << " " << ex << endl; cerr << endl << "save id="<< it->id << " " << ex << endl;
} }
} }
...@@ -117,15 +141,18 @@ int main( int argc, char **argv ) ...@@ -117,15 +141,18 @@ int main( int argc, char **argv )
i = amax; i = amax;
cout << "\r" << " i = " << i <<" "<< flush; cout << "\r" << " i = " << i <<" "<< flush;
for( std::list<ObjectId>::iterator it=l.begin(); it!=l.end(); ++it ) for( std::list<IInfo>::iterator it=l.begin(); it!=l.end(); ++it )
{ {
try try
{ {
ui.saveValue((*it), i, UniversalIO::AnalogInput); if( it->iotype == UniversalIO::AnalogInput )
ui.saveValue(it->id, i, UniversalIO::AnalogInput);
else
ui.setValue(it->id, i);
} }
catch( Exception& ex ) catch( Exception& ex )
{ {
cerr << endl << "save id="<< (*it) << " " << ex << endl; cerr << endl << "save id="<< it->id << " " << ex << endl;
} }
} }
} }
......
...@@ -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 uniset-start.sh -f ./uniset-simitator --confile test.xml --sid 10,16,9
#done #done
#wait #wait
......
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