improve comand line

This commit is contained in:
2021-06-15 14:39:54 +02:00
parent 02e906764c
commit 86515e2da7

View File

@ -51,13 +51,15 @@ void help()
<<"open [name] Open camera with string name\n" <<"open [name] Open camera with string name\n"
<<"close Close camera \n" <<"close Close camera \n"
<<"capture [file] Take an image and save it to file\n" <<"capture [file] Take an image and save it to file\n"
<<"exposure [s] set exposure to x seconds\n"
<<"gain [n] set gain to n times\n"
<<"exit Quit program\n"; <<"exit Quit program\n";
} }
void callback(cv::Mat data) void callback(cv::Mat data)
{ {
Log(Log::INFO)<<"Saveing image"; std::cout<<"Saveing image\n> "<<std::flush;
cv::imwrite("./testimg.png", data); cv::imwrite(filename, data);
} }
std::vector<std::string> tokenize(const std::string& in, char delim = ' ') std::vector<std::string> tokenize(const std::string& in, char delim = ' ')
@ -85,8 +87,6 @@ int main(int argc, char* argv[])
std::getline(std::cin, line); std::getline(std::cin, line);
std::vector<std::string> tokens = tokenize(line); std::vector<std::string> tokens = tokenize(line);
int ret = -1;
if(!tokens.empty()) if(!tokens.empty())
{ {
if(tokens[0].find("help") != std::string::npos) if(tokens[0].find("help") != std::string::npos)
@ -95,18 +95,16 @@ int main(int argc, char* argv[])
break; break;
else if(tokens[0].find("list") != std::string::npos) else if(tokens[0].find("list") != std::string::npos)
listDevices(); listDevices();
else if(tokens[0].find("open") != std::string::npos) else if(tokens[0].find("open") != std::string::npos || tokens[0] == "o")
{ {
if(tokens.size() > 1) if(tokens.size() > 1)
{ {
ret = -1;
size_t index = std::stoul(tokens[1]); size_t index = std::stoul(tokens[1]);
if(index < Camera::getAvailableCameras().size()) if(index < Camera::getAvailableCameras().size())
{ {
camera.openCamera(index); camera.openCamera(index);
if(camera.isOpen()) if(camera.isOpen())
{ {
ret = 0;
camera.setAcquisitionMode(Camera::MODE_SINGLE); camera.setAcquisitionMode(Camera::MODE_SINGLE);
camera.setBayerMode(Camera::BAYER_GREEN); camera.setBayerMode(Camera::BAYER_GREEN);
camera.setTriggerMode(Camera::TRIGGER_SOFTWARE); camera.setTriggerMode(Camera::TRIGGER_SOFTWARE);
@ -119,17 +117,59 @@ int main(int argc, char* argv[])
} }
} }
} }
else if(tokens[0].find("capture") != std::string::npos) else if(tokens[0].find("capture") != std::string::npos || tokens[0] == "c")
{ {
if(tokens.size() > 1) if(camera.isOpen())
{ {
ret = -1; if(tokens.size() > 1)
if(camera.isOpen())
{
filename = tokens[1] + ".png"; filename = tokens[1] + ".png";
camera.trigger(); else
} filename = "testimg.png";
camera.startAcquisition();
camera.trigger();
} }
else
{
std::cout<<"Camera not open\n";
}
}
else if(tokens[0].find("exposure") != std::string::npos || tokens[0] == "e")
{
if(camera.isOpen())
{
if(tokens.size() > 1)
{
if(!camera.setExposureTime(atof(tokens[1].c_str())*1000000.0))
std::cout<<"setting exposure time failed\n";
}
else
std::cout<<"Exposure time: "<<camera.getExposureTime()/1000000.0<<'\n';
}
else
{
std::cout<<"Camera not open\n";
}
}
else if(tokens[0].find("gain") != std::string::npos || tokens[0] == "g")
{
if(camera.isOpen())
{
if(tokens.size() > 1)
{
if(!camera.setGain(atof(tokens[1].c_str())))
std::cout<<"setting exposure time failed\n";
}
else
std::cout<<"Gain: "<<camera.getGain()<<'\n';
}
else
{
std::cout<<"Camera not open\n";
}
}
else
{
std::cout<<tokens[0]<<" is not a valid command\n";
} }
} }
} }