Input fra parallelport

Tags:    c++

Hej

Jeg er ved at lave en stokrfyrstyring gennem parallelporten.

Termostaten fungerer ved tiden det tager at oplade en kondensator gennem en varmefølsom modstand. Jeg sætter '1' gennem parallelporten på kondensatoren, og venter på den anden side bliver '0' (lidt forsimplet).

Er jeg tvunget til at lade programmet køre i løkke, indtil der er '0', eller kan jeg lave et interrupt eller lignende, således programmet ikke er optaget i ventetiden?

VH Jesper R



Hej

Jeg er ved at lave en stokrfyrstyring gennem parallelporten.

Termostaten fungerer ved tiden det tager at oplade en kondensator gennem en varmefølsom modstand. Jeg sætter '1' gennem parallelporten på kondensatoren, og venter på den anden side bliver '0' (lidt forsimplet).

Er jeg tvunget til at lade programmet køre i løkke, indtil der er '0', eller kan jeg lave et interrupt eller lignende, således programmet ikke er optaget i ventetiden?

VH Jesper R

Jeg ved ikke helt om du kan lave et interrupt, men kan du ikke bare lave en tread hvor du venter på at modtage 0. Så kan du stadig gøre noget i selve programmet, så venter du bare i tråden.

Mvh.
Søren



Hej Søren.
Nu fik jeg jeg ikke skrevet, at jeg er helt 'grøn' inden for C++ programmering.

Målet er at jeg vil kunne lave noget dataopsamling på forbrug osv, og derfra lave den 'perfekte' styring, der tager højde for alt.

For nogle år siden (rigtig mange), var jeg god til assemblerprogrammering på A500.
Min første tanke med den her stokerstyring var også først at lave det på en gammel Amiga, fordi det ville være nemt,
-programmere direkte til processoren, og have den fulde kontrol.

Men hvorfor ikke lære at programmere nutidens (Windows)maskiner, det kunne jo være man kunne bruge det til mere...

Derfor har jeg besluttet mig for at lære C++ (assembler er vel ikke et valg, når det skal køre under windows??), og er nået 'så langt' at jeg fra XP kan skrive til, og læse fra porten.
Det er bare ikke nok, når jeg skal kunne læse den præcise tid fra '1' til '0'.
Jeg har prøvet med GetTickCount, og det virker fint, indtil man åbner et vindue eller andet - det forstyrer timingen.


Med andre ord ved jeg ikke hvad en 'tread' er, så hvis du vil forklare lidt nærmere...

VH Jesper



Man kan godt programmere i assembler under windows, men det er ikke ret ofte en god idé.

En tråd er en selvstændig/uafhængig eksekvering af kode. Flere tråde kan køre "parallelt".
I dit tilfælde kunne du have en tråd til hoveddelen (/brugerfladen) og en anden tråd til at håndtere porten. Den sidste tråd kan man give høj prioritet, så den kommer til at køre først, for derved at kunne få mere nøjagtig timing.

Hvis du vil måle tid nøjagtig skal du bruge QueryPerformanceCounter (og QueryPerformanceFrequency).

Hvis dit program kræver en meget nøjagtig timing skal den nok køre som en service og/eller laves som en driver.



t