Forum: PC-Programmierung Main-Routine in Visual Basic


von A. Zöller (Gast)


Lesenswert?

Ich habe ein Programm zur Messwerterfassung und zum Schalten von einigen 
Dingen an meiner Heizung laufen. Dabei werden einige Eingänge des 
Parallelports in einer Timerroutine abgefragt und bestimmte Sachen 
sofort in eine Logdatei geschrieben. Die Timerroutine wird 4 mal in der 
Sekunde aufgerufen. Jetzt müsste ich noch mehr machen. Ich befürchte 
jedoch dass meine Timerroutine zu lang wird.
Auf einem Mikrokontrollersystem fragt man die Eingänge in einer 
Timerinterrupt-Routine ab und setzt Flags, die dann in der Hauptschleife 
ausgewertet und verarbeitet werden. Dies würde ich hier gerne genauso 
machen. Mein Programm läuft unter VB6. Klar kann ich in der Timerroutine 
Flags setzen, aber wo ist die Hauptschleife wo ich sie abfragen kann ? 
Ich könnte einen weiteren langsameren Timer benutzen aber ich glaube das 
ist auch kein sauberer Weg. Es läuft parallel ein anderes Programm das 
Temperaturen mitloggt, d.h. für dieses Programm muss auch noch CPU-Zeit 
übrig sein.
Wie wird den sowas am besten implementiert (und am einfachsten) ?

A. Zöller

von Karl H. (kbuchegg)


Lesenswert?

A. Zöller schrieb:
> Ich habe ein Programm zur Messwerterfassung und zum Schalten von einigen
> Dingen an meiner Heizung laufen. Dabei werden einige Eingänge des
> Parallelports in einer Timerroutine abgefragt und bestimmte Sachen
> sofort in eine Logdatei geschrieben. Die Timerroutine wird 4 mal in der
> Sekunde aufgerufen. Jetzt müsste ich noch mehr machen. Ich befürchte
> jedoch dass meine Timerroutine zu lang wird.

Über wieviele Daten reden wir, die da geschrieben werden?

> machen. Mein Programm läuft unter VB6. Klar kann ich in der Timerroutine
> Flags setzen,

Denk logisch nach.
Wenn das Schreiben zu lange dauert, als dass du es 4 mal in der Sekunde 
hin kriegst, dann ist es völlig egal, wo du das Schreiben hinpackst: Es 
wird sich auch dann mit dem Timing nicht ausgehen.

Aber PC samt Platten-Hardware sind schnell. Da musst du schon eine Menge 
schreiben, damit sich das dann nicht mehr ausgeht.

von Bernadette (Gast)


Lesenswert?

Wenn du mit Interrupt arbeitest befindet sich dein uC doch in einer 
endlosen Hauptschteife, aus der in dir Interruptroutine gesprungen wird.

In dieser Hauptschleife erfolgt die Auswertung der Flags.

B.

von Karl H. (kbuchegg)


Lesenswert?

Bernadette schrieb:
> Wenn du mit Interrupt arbeitest befindet sich dein uC doch in einer
> endlosen Hauptschteife, aus der in dir Interruptroutine gesprungen wird.
>
> In dieser Hauptschleife erfolgt die Auswertung der Flags.

Obacht: Der TO redet von einem PC

von Eddy C. (chrisi)


Lesenswert?

Genau. Und wenn er gerne eine Hauptschleife hätte, soll er den gesamten 
Vorgang in einen Thread "outsourcen". In VB.NET eine angenehme 
Angelegenheit bzw. viel Raum zur Weiterentwicklung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.