From 20d17edaf831a901d5fe55526163cfb5ce3b0fbf Mon Sep 17 00:00:00 2001 From: Lugovtsov Gleb Date: Tue, 1 Nov 2022 14:52:57 +0300 Subject: [PATCH] work on generator class --- project/.gitignore | 6 +++++ project/Device.hpp | 54 +++++++++++++++++++++++++++++++-------------- project/main | Bin 33248 -> 0 bytes project/main.o | Bin 35656 -> 0 bytes 4 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 project/.gitignore delete mode 100755 project/main delete mode 100644 project/main.o diff --git a/project/.gitignore b/project/.gitignore new file mode 100644 index 0000000..fcea9db --- /dev/null +++ b/project/.gitignore @@ -0,0 +1,6 @@ +*test* +*tmp* +.vscode +*.exe +*.o +main \ No newline at end of file diff --git a/project/Device.hpp b/project/Device.hpp index e24f4ad..ba20660 100644 --- a/project/Device.hpp +++ b/project/Device.hpp @@ -50,33 +50,53 @@ public: class Generator: public Device { public: - Generator(std::string path_name): Device(path_name), channel("C1") { } + Generator(std::string path_name): Device(path_name), m_channel("C1") { } + + void set_channel(size_t channel) { + if (channel == 1 || channel == 2) m_channel = "C" + std::to_string(channel); + else std::cerr << "Invalid channel" << std::endl; + } void buzz() { command("BUZZ ON"); } - void basic_wave( - size_t channel, - std::string type, - double frequency, - double period, - double amplitude, - double offset, - double phase - ); - - void set_channel(size_t ch) { - if (ch == 1 || ch == 2) channel = "C" + std::to_string(ch); - else std::cerr << "Invalid channel" << std::endl; + void set_waveform(std::string waveform) { + m_waveform = waveform; + command(m_channel + ":BSWV WVTP," + waveform); } - void set_waveform(std::string type) { - command(channel + ":BSWV WVTP," + type); + void set_frequency(double frequency) { + m_frequency = frequency; + command(m_channel + ":BSWV FRQ," + std::to_string(frequency)); } + void set_period(double period) { + command(m_channel + ":BSWV PERI," + std::to_string(period)); + } + + void set_amplitude(double amplitude) { + command(m_channel + ":BSWV AMP," + std::to_string(amplitude)); + } + + void set_offset(double offset) { + command(m_channel + ":BSWV OFST," + std::to_string(offset)); + } + + void set_phase(double phase) { + command(m_channel + ":BSWV PHSE," + std::to_string(phase)); + } + + void update(); + private: - std::string channel; + std::string m_channel; + std::string m_waveform; + double m_frequency; + double m_period; + double m_amplitude; + double m_offset; + double m_phase; }; diff --git a/project/main b/project/main deleted file mode 100755 index 6bb0db000d8a69fa78ffed325575bda00fe3ea49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33248 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 diff --git a/project/main.o b/project/main.o deleted file mode 100644 index 25190233ef18ac77a59cfdd24f73ae91db0ac138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35656 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