IP_HeartBand/test.cpp

70 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <iostream>
#include <vector>
#include <chrono>
#include <random>
// État du rythme cardiaque
enum class HeartRateState {
NORMAL,
BRADYCARDIA,
TACHYCARDIA
};
// Fonction pour générer un signal de battement cardiaque
std::vector<float> generateHeartbeatSignal(HeartRateState state, int durationSeconds = 10, int sampleRate = 1000) {
int bpm;
switch (state) {
case HeartRateState::BRADYCARDIA:
bpm = 40 + rand() % 15; // 40-55 BPM
break;
case HeartRateState::TACHYCARDIA:
bpm = 110 + rand() % 30; // 110-140 BPM
break;
default:
bpm = 60 + rand() % 40; // 60-100 BPM
break;
}
int totalSamples = durationSeconds * sampleRate;
int samplesPerBeat = (60.0 / bpm) * sampleRate;
std::vector<float> signal(totalSamples, 0.0f);
for (int i = 0; i < totalSamples; i += samplesPerBeat) {
if (i < totalSamples) signal[i] = 1.0f; // Pic R
if (i + 1 < totalSamples) signal[i + 1] = 0.5f;
if (i + 2 < totalSamples) signal[i + 2] = 0.2f;
}
return signal;
}
// Pause active sans utiliser thread
void waitMilliseconds(int ms) {
auto start = std::chrono::high_resolution_clock::now();
while (std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::high_resolution_clock::now() - start).count() < ms) {
// boucle vide
}
}
// Affichage du signal
void printSignal(const std::vector<float>& signal, int sampleRate) {
for (size_t i = 0; i < signal.size(); ++i) {
std::cout << signal[i] << "\n";
waitMilliseconds(1000 / sampleRate);
}
}
// ----------- FONCTION PRINCIPALE ------------
int main() {
std::cout << "Simulation dun signal de battement cardiaque\n";
// Tu peux changer ici : NORMAL / BRADYCARDIA / TACHYCARDIA
HeartRateState state = HeartRateState::TACHYCARDIA;
std::vector<float> signal = generateHeartbeatSignal(state, 5, 100); // 5 secondes, 100 Hz
printSignal(signal, 100);
return 0;
}