BS_Praktikum4/main.cpp
2025-06-03 01:49:23 +02:00

75 lines
2.4 KiB
C++

#include "sensor_network.h"
#include <iostream>
#include <string>
#include <limits>
#include <thread>
constexpr size_t DEFAULT_NUM_SENSORS = 3;
constexpr size_t DEFAULT_NUM_ANALYSERS = 2;
constexpr int DEFAULT_RUN_TIME = 30;
constexpr size_t DEFAULT_BUFFER_SIZE = 8;
template<size_t N>
void run_simulation(size_t num_sensors, size_t num_analysers, int run_time) {
SensorNetwork<N> network;
std::cout << "\n=== Simulation gestartet ===\n"
<< "Sensoren: " << num_sensors << "\n"
<< "Analysemodule: " << num_analysers << "\n"
<< "Puffergröße: " << N << "\n"
<< "Laufzeit: " << run_time << "s\n\n";
network.start(num_sensors, num_analysers);
std::this_thread::sleep_for(std::chrono::seconds(run_time));
network.stop();
std::cout << "\n=== Simulation beendet ===\n";
}
size_t get_input(const std::string& prompt, size_t default_value) {
std::cout << prompt << " [" << default_value << "]: ";
std::string input;
std::getline(std::cin, input);
if(input.empty()) return default_value;
try {
return std::stoul(input);
} catch(...) {
std::cout << "Ungültige Eingabe. Verwende Standardwert: "
<< default_value << "\n";
return default_value;
}
}
int main() {
std::cout << "=== Sensornetzwerk-Simulation ===\n"
<< "(Leere Eingabe verwendet Standardwerte)\n";
size_t num_sensors = get_input("Anzahl Sensoren", DEFAULT_NUM_SENSORS);
size_t num_analysers = get_input("Anzahl Analysemodule", DEFAULT_NUM_ANALYSERS);
int run_time = static_cast<int>(
get_input("Laufzeit (Sekunden)", DEFAULT_RUN_TIME)
);
size_t buffer_size = get_input("Puffergröße", DEFAULT_BUFFER_SIZE);
switch(buffer_size) {
case 8:
run_simulation<8>(num_sensors, num_analysers, run_time);
break;
case 16:
run_simulation<16>(num_sensors, num_analysers, run_time);
break;
case 32:
run_simulation<32>(num_sensors, num_analysers, run_time);
break;
default:
std::cout << "Nicht unterstützte Puffergröße. Verwende Standard ("
<< DEFAULT_BUFFER_SIZE << ")\n";
run_simulation<DEFAULT_BUFFER_SIZE>(
num_sensors, num_analysers, run_time
);
}
std::cout << "Simulation erfolgreich abgeschlossen.\n";
return 0;
}