Ja, so hatte ich es auch schon mal programmiert und es lief schnell. Aber da fehlt auch die Routine zum frequenzabhängigen Wiederholen der EKG-Komplexe. Die Berechnung der Intervallänge kann man natürlich ausserhalb der Schleife legen, dann kann man sie allerdings nicht während des Ablaufs ändern. Da kommt mir allerdings die Idee, dass man das Frequenzintervall über ein OnClick Ereignis bei der Eingabe der Frequenz in das Edit-Feld berechnen könnte und dann an die EKG-Routine weiterleiten könnte. Dann wird es nur einmal nach der Änderung berechnet.
Danke nochmal und Gruss
Frank
der springende Punkt
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: der springende Punkt
Frank8001 hat geschrieben:Die Berechnung der Intervallänge kann man natürlich ausserhalb der Schleife legen, dann kann man sie allerdings nicht während des Ablaufs ändern. Da kommt mir allerdings die Idee, dass man das Frequenzintervall über ein OnClick Ereignis bei der Eingabe der Frequenz in das Edit-Feld berechnen könnte und dann an die EKG-Routine weiterleiten könnte. Dann wird es nur einmal nach der Änderung berechnet.
Mein Reden!
Zu den Werten, ich dachte Du berechnest die Kurve nur einmal und legst Sie dann im Array ab, um sie von dort aus in einer Schleife immer wieder zu durchlaufen, also auch außerhalb der Schleife, wenn nicht kann man die Berechnung vielleicht noch etwas optimieren?
Das ist eigentlich mein Steckenpferd und zwischendurch brauche ich schon mal Ablenkung und dann mach ich mich gerne über so etwas her!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
Re: der springende Punkt
Ja, die Kurve ist einfach mit den gespeicherten y-Werten in EKG[a] festgelegt. Aber die Frequenz, mit der die Kurve wiederholt wird, die kann im laufenden Betrieb verändert werden.
Gruß
Frank
Gruß
Frank
-
- Beiträge: 298
- Registriert: Di 23. Nov 2010, 23:41
- OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
- CPU-Target: 32Bit/64Bit
- Wohnort: Geldern
- Kontaktdaten:
Re: der springende Punkt
Also um es nicht zu kompliziert zu machen, würde ich die Berechnung durchführen und die Übergabe des Wertes über eine CriticalSection lösen, also ungefähr so:
Code: Alles auswählen
var
ecs: TRTLCriticalSection;
value: DWord;
//in Create (Programm-Start)
InitCriticalSection(ecs);
//setzen der Variablen von der Rechen-Routine
procedure SetValue(A: DWord);
begin
EnterCriticalSection(ecs);
try
value := A; //Wert Setzen
finally
LeaveCriticalSection(ecs);
end;
end;
//auslesen der Variablen von der Zeichen-Routine
function GetValue(): DWord;
begin
EnterCriticalSection(ecs);
try
result := value; //Wert Lesen
finally
LeaveCriticalSection(ecs);
end;
end;
//in Destroy (Programm-Ende)
DoneCriticalSection(ecs);
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me