Hallo zusammen,
Zwecks Steuerung eines Schrittmotors habe ich für eine TButton-Komponente eine Routine geschrieben, die das für die Steuerung des Motors erforder-
liche Bitmuster am Parallelport ausgibt:
Globale Deklaration:
Delphi-Quellcode:
var
Form1: TForm1;
...
Filter:byte;
Ende: Boolean;
procedure Tform1.DREH_RECHTSClick(Sender: TObject);
begin
...Anweisungen
Repeat
...Anweisungen
...
If Filter = 1 then
Ende:=True;
Until Ende;
...Anweisungen
end;
Die Routine läuft bzw. der Schrittmotor läßt sich einschalten und dreht wie gewünscht. Das Problem ist allerdings, dass sich die Routine bzw. der Motor nicht über einen zweiten Aus-Schalter(TButton) abschalten läßt, da das Formular, in dem sich die Schalter (DREH_RECHTS und ein weiterer AUS) befinden deaktiviert ist, sobald die Repeat-Until (Endlos!)Schleife läuft. Die Ereignis-Behandlungsroutine für den DREH_RECHTS-Button wird ja nicht bendet.
Mittels Filter sollte ursprünglich die Information abgefragt werden, ob AUS geklickt wurde. Für eine TButton-Abfrage gibt es zwar etliche Möglichkeiten, nur sind diese alle sinnlos, wenn sich der AUS-Button
bei laufendem Motor nicht schalten läßt. Da sich das Problem weder mit Mausabfragen noch durch die Verwendung eines weiteren Formulars lösen ließ (Die Endlosschleife deaktiviert sämtliche Formulare der Anwendung), habe ich eine zweite Anwendung geschrieben, mit welcher sich das Strobe-Bit vom Steuer-Registers des ParallelPorts schalten läßt.
Das ursprüngliche Programm fragt jetzt über Filter das Strobe-Bit ab und der Motor läßt sich so mittels dieser Strobe-Bit-Änderung über das andere Programm wieder ausschalten.
Ganz abgesehen davon, dass dies wohl keine sehr elegante Lösung für obiges Problems ist, besteht ja weiterhin das Problem, dass eine Manipu-lation des drehenden Motors also eine Drehzahlsteuerung während des Betriebs so noch nicht möglich ist. Für Tipps im voraus vielen Dank.