EKG programmieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • EKG programmieren

    Hallo zusammen

    Wie programmiere ich am besten ein EKG (Elektrokardiogramm)?
    Was man dazu wissen muss: Es gibt den so genannten QRS-Komplex.

    Jetzt stellt sich mir die Frage, ob ich für jedes Q, R und S ein Objekt erstellen soll, das dann schlussendlich eine Animation wird. Das EKG ist abhängig vom Patientenzustand. Also ein einmaliges Programmieren liegt nicht drinnen. Es muss variabel sein.
    Könnt ihr mir da helfen?

    Lg
    Michael
  • Ich habe mir mal die Mühe gemacht soetwas zu Programmieren und Nachher auch sehr Flexibel ist. Das ganze lässt sich mit Modellierung realisieren. Das heißt wir bilden eine Funktion die diesen Ausschlag modelliert. Dann erstellen wir einen Array, wo jedesmal alle Elemente nach links verschoben werden. Am Ende wird der Momentane Zustand in diesem Array gespeichert. Ausgeben können wir dies dann mit den Primitiven. Wir erstellen ein Objekt mit folgenden Events und Code:

    Create:

    GML-Quellcode

    1. EKG_width = 512; //Die Breite des Bildschirms in Pixeln
    2. EKG_height = 256; //Die Höhe des Bildschirms in Pixeln
    3. EKG_speed = 120; //Die Geschwindigkeit in Pixeln pro Sekunde
    4. EKG_puls = 80; //Der Puls in Schläge pro Minute
    5. EKG_QRS_time = 0.12 //Die QRS-Dauer in Sekunden
    6. EKG_ST_time = 0.1 //Die ST-Dauer in Sekunden
    7. EKG_T_time = 0.1 //Die T-Dauer in Sekunden
    8. EKG_amplitude_QRS = 96; //Amplitude QRS
    9. EKG_amplitude_ST = 12; //Amplitude ST
    10. EKG_puls_time = 1; //Vergangene Zeit, seit letztem Ausschlag (Nicht verändern!)
    11. EKG_speed = round(EKG_speed / room_speed);
    12. for(var i = EKG_width; i >= 0; i--)
    13. EKG_data[i] = 0;
    Alles anzeigen


    Step:

    GML-Quellcode

    1. repeat(EKG_speed)
    2. {
    3. for(var i = 0; i < EKG_width; i++)
    4. EKG_data[i] = EKG_data[i + 1];
    5. if(EKG_puls_time <= EKG_QRS_time)
    6. {
    7. var px = EKG_puls_time/EKG_QRS_time;
    8. EKG_data[EKG_width] = sin(sqrt(px)*pi*3)*(px-px*px*2+px*px*px)*7*EKG_amplitude_QRS;
    9. }
    10. else
    11. {
    12. EKG_data[EKG_width] = 0;
    13. }
    14. var px = (EKG_puls_time - EKG_T_time * 0.5 - EKG_QRS_time - EKG_ST_time) / EKG_T_time;
    15. EKG_data[EKG_width] -= sqr(0.5 / (px * px + 0.5))*EKG_amplitude_ST;
    16. EKG_puls_time += 1/(EKG_speed*room_speed);
    17. if(EKG_puls > 0)
    18. if(EKG_puls_time > 60/EKG_puls)
    19. {
    20. EKG_puls_time = 0;
    21. audio_play_sound(snd_beep, 0, false);
    22. }
    23. }
    Alles anzeigen


    Draw:

    GML-Quellcode

    1. draw_set_colour(c_black);
    2. draw_rectangle(x, y, x + EKG_width, y + EKG_height, false);
    3. draw_set_colour(c_lime);
    4. draw_primitive_begin(pr_linestrip);
    5. for(var i = 0; i <= EKG_width; i++)
    6. draw_vertex(x + i, y + EKG_data[i] + EKG_height * 0.5);
    7. draw_primitive_end();


    Es lässt sich alles über die Variablen bequem steuern.
    Hier noch die Projektdatei: EKG.gmz

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Chris987 ()