本文整理汇总了C++中imc::Message::getTimeStamp方法的典型用法代码示例。如果您正苦于以下问题:C++ Message::getTimeStamp方法的具体用法?C++ Message::getTimeStamp怎么用?C++ Message::getTimeStamp使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类imc::Message
的用法示例。
在下文中一共展示了Message::getTimeStamp方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
int
main(int32_t argc, char** argv)
{
if (argc <= 1)
{
std::cerr << "Usage: " << argv[0] << " <path_to_log_1/Data.lsf[.gz]> ... <path_to_log_n/Data.lsf[.gz]>"
<< std::endl;
return 1;
}
std::map<std::string, Vehicle> vehicles;
for (int32_t i = 1; i < argc; ++i)
{
std::istream* is = 0;
Compression::Methods method = Compression::Factory::detect(argv[i]);
if (method == METHOD_UNKNOWN)
is = new std::ifstream(argv[i], std::ios::binary);
else
is = new Compression::FileInput(argv[i], method);
IMC::Message* msg = NULL;
uint16_t curr_rpm = 0;
bool got_state = false;
IMC::EstimatedState estate;
double last_lat;
double last_lon;
// Accumulated travelled distance
double distance = 0.0;
// Accumulated travelled time
double duration = 0.0;
bool got_name = false;
std::string log_name = "unknown";
bool ignore = false;
uint16_t sys_id = 0xffff;
std::string sys_name;
try
{
while ((msg = IMC::Packet::deserialize(*is)) != 0)
{
if (msg->getId() == DUNE_IMC_ANNOUNCE)
{
IMC::Announce* ptr = static_cast<IMC::Announce*>(msg);
if (sys_id == ptr->getSource())
{
sys_name = ptr->sys_name;
}
}
else if (msg->getId() == DUNE_IMC_LOGGINGCONTROL)
{
if (!got_name)
{
IMC::LoggingControl* ptr = static_cast<IMC::LoggingControl*>(msg);
if (ptr->op == IMC::LoggingControl::COP_STARTED)
{
sys_id = ptr->getSource();
log_name = ptr->name;
got_name = true;
}
}
}
else if (msg->getId() == DUNE_IMC_ESTIMATEDSTATE)
{
if (msg->getTimeStamp() - estate.getTimeStamp() > c_timestep)
{
IMC::EstimatedState* ptr = static_cast<IMC::EstimatedState*>(msg);
if (!got_state)
{
estate = *ptr;
Coordinates::toWGS84(*ptr, last_lat, last_lon);
got_state = true;
}
else if (curr_rpm > c_min_rpm)
{
double lat, lon;
Coordinates::toWGS84(*ptr, lat, lon);
double dist = Coordinates::WGS84::distance(last_lat, last_lon, 0.0,
lat, lon, 0.0);
// Not faster than maximum considered speed
if (dist / (ptr->getTimeStamp() - estate.getTimeStamp()) < c_max_speed)
{
distance += dist;
duration += msg->getTimeStamp() - estate.getTimeStamp();
}
estate = *ptr;
last_lat = lat;
last_lon = lon;
}
//.........这里部分代码省略.........
示例2: lsf
int
main(int32_t argc, char** argv)
{
if (argc < 2)
{
std::cerr << "Usage: " << argv[0] << " <abbrev of imc message 1>,<abbrev of imc message 2>,..,"
<< "<abbrev of imc message n> Data.lsf[.gz] .. Data.lsf[.gz]"
<< std::endl;
std::cerr << argv[0] << " accepts multiple IMC messages comma separated and "
<< "multiple Data.lsf files space separated." << std::endl;
std::cerr << "This program does not sort the input Data.lsf files." << std::endl;
return 1;
}
ByteBuffer buffer;
std::ofstream lsf("FilteredData.lsf", std::ios::binary);
IMC::Message* msg;
uint32_t accum = 0;
bool done_first = false;
std::set<uint32_t> ids;
std::vector<std::string> msgs;
Utils::String::split(argv[1], ",", msgs);
for (unsigned k = 0; k < msgs.size(); ++k)
{
uint32_t got = IMC::Factory::getIdFromAbbrev(Utils::String::trim(msgs[k]));
ids.insert(got);
}
for (uint32_t j = 2; j < (uint32_t)argc; ++j)
{
std::istream* is = 0;
Compression::Methods method = Compression::Factory::detect(argv[j]);
if (method == METHOD_UNKNOWN)
is = new std::ifstream(argv[j], std::ios::binary);
else
is = new Compression::FileInput(argv[j], method);
uint32_t i = 0;
try
{
while ((msg = IMC::Packet::deserialize(*is)) != 0)
{
if (!done_first)
{
// place an empty estimatedstate message in the log
IMC::EstimatedState state;
state.setTimeStamp(msg->getTimeStamp());
IMC::Packet::serialize(&state, buffer);
lsf.write(buffer.getBufferSigned(), buffer.getSize());
done_first = true;
}
std::set<uint32_t>::const_iterator it;
it = ids.find(msg->getId());
if (it != ids.end())
{
IMC::Packet::serialize(msg, buffer);
lsf.write(buffer.getBufferSigned(), buffer.getSize());
++i;
}
delete msg;
}
}
catch (std::runtime_error& e)
{
std::cerr << "ERROR: " << e.what() << std::endl;
return -1;
}
std::cerr << i << " messages in " << argv[j] << std::endl;
accum += i;
delete is;
}
lsf.close();
std::cerr << "Total of " << accum << " " << argv[1] << " messages." << std::endl;
return 0;
}
示例3: dest
//.........这里部分代码省略.........
std::istream* is;
if (file.isDirectory())
{
file = file / "Data.lsf";
if (!file.isFile())
file += ".gz";
}
if (!file.isFile())
{
std::cerr << file << " does not exist\n";
return 1;
}
Compression::Methods method = Compression::Factory::detect(file.c_str());
if (method == METHOD_UNKNOWN)
is = new std::ifstream(file.c_str(), std::ios::binary);
else
is = new Compression::FileInput(file.c_str(), method);
IMC::Message* m;
m = IMC::Packet::deserialize(*is);
if (!m)
{
std::cerr << file << " contains no messages\n";
delete is;
continue;
}
DUNE::Utils::ByteBuffer bb;
double time_origin = m->getTimeStamp();
if (begin >= 0)
{
do
{
if (m->getTimeStamp() - time_origin >= begin)
break;
delete m;
m = IMC::Packet::deserialize(*is);
}
while (m);
if (!m)
{
std::cerr << "no messages for specified time range" << std::endl;
return 1;
}
}
else
begin = 0;
double start_time = Clock::getSinceEpoch();
double now = start_time;
do
{
double msg_ts = m->getTimeStamp();
double vtime = msg_ts - time_origin;
m->setTimeStamp(start_time + vtime);
double future = 0;
示例4: if
int
main(int argc, char** argv)
{
Utils::OptionParser options;
options.executable(argv[0])
.program(argv[0])
.copyright(DUNE_COPYRIGHT)
.email(DUNE_CONTACT)
.version("1.0")
.date(DUNE_BUILD_TIME)
.arch(DUNE_SYSTEM_NAME)
.add("-t", "--timeout",
"Interval to ignore data right after a new device has been turned on."
" Default is 10.0", "TIMEOUT")
.add("-f", "--file",
"Log file in .lsf or .lsf.gz format", "FILE");
// Parse command line arguments.
if (!options.parse(argc, argv) || options.value("--file").empty())
{
if (options.bad())
std::cerr << "ERROR: " << options.error() << std::endl;
options.usage();
return 1;
}
std::string file = options.value("--file");
std::istream* is = 0;
Compression::Methods method = Compression::Factory::detect(file.c_str());
if (method == METHOD_UNKNOWN)
is = new std::ifstream(file.c_str(), std::ios::binary);
else
is = new Compression::FileInput(file.c_str(), method);
IMC::Message* msg = NULL;
// Current and voltage measurements
ElectricMeasure current_measures[SU_COUNT];
ElectricMeasure voltage_measures[SU_COUNT];
typedef std::map<uint8_t, std::string> Id2Name;
Id2Name channel_names;
typedef std::map<uint8_t, uint8_t> Supply2Id;
Supply2Id measure_ids;
typedef std::map<std::string, double> Name2Power;
Name2Power device_power;
// Got all power channels
bool got_channels = false;
// Time counter
double counter = 0.0;
// Test has started
bool test_started = false;
// Ignore measures if true
bool ignore_data = true;
bool was_ignoring = true;
// Last timestamp
double last_timestamp = -1.0;
// Timeout for ignoring data
double ignore_timeout;
if (options.value("--timeout").empty())
ignore_timeout = 10.0;
else
ignore_timeout = atoi(options.value("--timeout").c_str());
// Last device turned on
Id2Name::const_iterator last_device = channel_names.end();
try
{
while ((msg = IMC::Packet::deserialize(*is)) != 0)
{
if (last_timestamp < 0.0)
last_timestamp = msg->getTimeStamp();
if (ignore_data != was_ignoring)
{
if (!was_ignoring)
{
// reset timer counter
counter = 0.0;
}
}
if (ignore_data && test_started)
{
counter += msg->getTimeStamp() - last_timestamp;
if (counter >= ignore_timeout)
{
counter = 0.0;
//.........这里部分代码省略.........
示例5: if
int
main(int32_t argc, char** argv)
{
if (argc <= 1)
{
std::cerr << "Usage: " << argv[0] << " <path_to_log_1/Data.lsf[.gz]> ... <path_to_log_n/Data.lsf[.gz]>"
<< std::endl;
return 1;
}
double total_accum = 0;
for (int32_t i = 1; i < argc; ++i)
{
std::istream* is = 0;
Compression::Methods method = Compression::Factory::detect(argv[i]);
if (method == METHOD_UNKNOWN)
is = new std::ifstream(argv[i], std::ios::binary);
else
is = new Compression::FileInput(argv[i], method);
IMC::Message* msg = NULL;
uint16_t curr_rpm = 0;
bool got_state = false;
IMC::EstimatedState estate;
double last_lat;
double last_lon;
// Accumulated travelled distance
double accum = 0;
bool got_name = false;
std::string log_name = "unknown";
bool ignore = false;
try
{
while ((msg = IMC::Packet::deserialize(*is)) != 0)
{
if (msg->getId() == DUNE_IMC_LOGGINGCONTROL)
{
if (!got_name)
{
IMC::LoggingControl* ptr = dynamic_cast<IMC::LoggingControl*>(msg);
if (ptr->op == IMC::LoggingControl::COP_STARTED)
{
log_name = ptr->name;
got_name = true;
}
}
}
else if (msg->getId() == DUNE_IMC_ESTIMATEDSTATE)
{
if (msg->getTimeStamp() - estate.getTimeStamp() > c_timestep)
{
IMC::EstimatedState* ptr = dynamic_cast<IMC::EstimatedState*>(msg);
if (!got_state)
{
estate = *ptr;
Coordinates::toWGS84(*ptr, last_lat, last_lon);
got_state = true;
}
else if (curr_rpm > c_min_rpm)
{
double lat, lon;
Coordinates::toWGS84(*ptr, lat, lon);
double dist = Coordinates::WGS84::distance(last_lat, last_lon, 0.0,
lat, lon, 0.0);
// Not faster than maximum considered speed
if (dist / (ptr->getTimeStamp() - estate.getTimeStamp()) < c_max_speed)
accum += dist;
estate = *ptr;
Coordinates::toWGS84(*ptr, last_lat, last_lon);
}
}
}
else if (msg->getId() == DUNE_IMC_RPM)
{
IMC::Rpm* ptr = dynamic_cast<IMC::Rpm*>(msg);
curr_rpm = ptr->value;
}
else if (msg->getId() == DUNE_IMC_SIMULATEDSTATE)
{
// since it has simulated state let us ignore this log
ignore = true;
delete msg;
std::cerr << "this is a simulated log";
break;
}
//.........这里部分代码省略.........