15 #include <visiontransfer/deviceenumeration.h>
16 #include <visiontransfer/imagetransfer.h>
17 #include <visiontransfer/imageset.h>
18 #include <visiontransfer/deviceparameters.h>
27 using namespace visiontransfer;
28 using namespace visiontransfer::param;
30 int main(
int argc,
const char** argv) {
36 if(devices.size() == 0) {
37 std::cout <<
"No devices discovered!" << std::endl;
42 std::cout <<
"Discovered devices:" << std::endl;
43 for(
unsigned int i = 0; i< devices.size(); i++) {
44 std::cout << devices[i].toString() << std::endl;
46 std::cout << std::endl;
56 std::cout << std::boolalpha << std::left;
57 std::cout <<
"Server-side Parameter Enumeration" << std::endl;
58 std::cout <<
"=================================" << std::endl << std::endl;
60 std::cout <<
"All " << allParams.size() <<
" parameters reported by server:" << std::endl;
61 for (ParameterSet::iterator it = allParams.begin(); it != allParams.end(); ++it) {
64 case ParameterValue::TYPE_INT: {
65 std::cout << std::setw(colW) << (param.
getUid()+
" (int)") <<
" = " << std::setw(valueW) << param.
getCurrent<
int>();
67 std::cout <<
" range " << param.
getMin<
int>() <<
"-" << param.
getMax<
int>();
72 std::cout << std::endl;
75 case ParameterValue::TYPE_BOOL: {
76 std::cout << std::setw(colW) << (param.
getUid() +
" (bool)") <<
" = " << (param.
getCurrent<
bool>()?
"true":
"false") << std::endl;
79 case ParameterValue::TYPE_DOUBLE: {
80 std::cout << std::setw(colW) << (param.
getUid()+
" (double)") <<
" = " << std::setw(valueW) << param.
getCurrent<
double>();
82 std::cout <<
" range " << param.
getMin<
double>() <<
"-" << param.
getMax<
double>();
85 std::cout <<
" increment " << param.
getIncrement<
double>();
87 std::cout << std::endl;
90 case ParameterValue::TYPE_STRING: {
91 std::cout << std::setw(colW) << (param.
getUid() +
" (string)") <<
" = \"" << param.
getCurrent<std::string>() <<
"\"" << std::endl;
94 case ParameterValue::TYPE_SAFESTRING: {
95 std::cout << std::setw(colW) << (param.
getUid() +
" (safestring)") <<
" = \"" << param.
getCurrent<std::string>() <<
"\"" << std::endl;
98 case ParameterValue::TYPE_TENSOR: {
99 std::cout << std::setw(colW) << (param.
getUid() +
" (tensor) - shape: ");
101 if (i) std::cout <<
"x";
104 std::cout << std::endl;
107 std::cout << std::setw(colW) << (
" ");
108 std::cout <<
" - data: ";
111 std::cout << data[i] <<
" ";
112 if (((i+1)%perline)==0) {
113 std::cout << std::endl << std::setw(colW) << (
" ") <<
" ";
116 std::cout << std::endl;
119 case ParameterValue::TYPE_COMMAND: {
120 std::cout << std::setw(colW) << (param.
getUid() +
" (-> command trigger)") << std::endl;
134 std::cout << std::endl;
138 if (std::string(argv[1]) ==
"LOG") {
139 std::cout <<
"(Showing incoming parameter events - terminate with Ctrl-C ...)" << std::endl;
140 parameters.setParameterUpdateCallback([¶meters](
const std::string& uid) {
142 std::cout << uid <<
" := " << parameters.getParameter(uid).getCurrent<std::string>() << std::endl;
144 while (
true) std::this_thread::sleep_for(std::chrono::seconds(1));
146 std::string argname(argv[1]);
148 std::string val(argv[2]);
149 std::cout <<
"Sending request to set " << argname <<
" to " << val << std::endl;
150 parameters.setParameter(argname, val);
152 std::cout <<
"Requesting single parameter " << argname << std::endl;
153 std::cout <<
"-> cast as a string: " << parameters.getParameter(argname).getCurrent<std::string>() << std::endl;
157 std::cout <<
"You can launch this with a parameter name to get (and a value to set it)" << std::endl;
158 std::cout <<
" e.g. " << argv[0] <<
" operation_mode [2]" << std::endl;
159 std::cout <<
"or with 'LOG' as first argument to see continuous parameter updates" << std::endl;
160 std::cout << std::endl;
164 }
catch(
const std::exception& ex) {
171 std::cerr <<
"Exception occurred: " << ex.what() << std::endl;