From 788403eea6557b4d7eb7d8ec1fd4eb42f1cd3bfe Mon Sep 17 00:00:00 2001 From: marwik15 Date: Fri, 6 May 2022 12:26:31 +0200 Subject: Get interval and sample count from supplied parameters --- examples/sinewave/sinewave_example.cpp | 44 ++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) (limited to 'examples') diff --git a/examples/sinewave/sinewave_example.cpp b/examples/sinewave/sinewave_example.cpp index e6583d6..7ab316d 100644 --- a/examples/sinewave/sinewave_example.cpp +++ b/examples/sinewave/sinewave_example.cpp @@ -1,19 +1,55 @@ #include -#include -#include +#include #include #include +#include +#include +#include +#include -int main() { +using namespace std::chrono_literals; +using Clock = std::chrono::high_resolution_clock; + +int main(int argc, char* argv[]) { + + std::chrono::milliseconds interval{ 10ms }; + int samples = 300, i = 0; + bool end = false; + + std::function infinite = []() {}; + std::function limited = [&end, &i, &samples]() { + if (i > samples) end = true; + i++; + }; + + auto& gen = infinite; + + if (argc == 3) { + try { + interval = std::chrono::milliseconds(std::stoi(argv[1])); + samples = std::stoi(argv[2]); + gen = limited; + } + catch (const std::invalid_argument& ia) { + std::cerr << "Invalid argument: " << ia.what() << '\n'; + + return 0; + } + } hwd::sinewave::set_amplitude(11); hwd::sinewave::set_frequency(10); hwd::sinewave::set_phase(30); - for (int i = 1; i < 1200; i++) { + while (!end) { + const auto endTime = Clock::now() + interval; + std::cout << hwd::sinewave::get_point() << std::endl; + + std::this_thread::sleep_until(endTime); + gen(); } return 0; -- cgit v1.1