ich hab jetzt mal was zusammen gebastelt:
Code:
#include <stdio.h>
#include <asm/io.h>
#include <sys/perm.h>
#include <sys/time.h>
int main()
{
struct timeval start,end;
int halten,wdat,difftime;
ioperm(0x378,3,1); //Port(LPT1) öffnen
gettimeofday(&start,NULL); //Anfangszeit in 'start' speichern
difftime=0;
wdat=0;
outb(255,0x378); //Strom an allen Pins an
while(1)
{
gettimeofday(&end,NULL); //Endzeit in 'end' speichern
if((inb(0x379) & 64)==0) //wenn zwichen Pin 10 und Masse->Kontakt wdat->hochzählen
{
if(halten==0)
{
wdat++;
}
halten=1;
}
if((inb(0x379) & 64)!=0) halten=0; //wenn zwichen Pin 10 und Masse-> kein Kontakt mehr dann nächsten Kontakt registrieren
difftime = end.tv_sec - start.tv_sec; //Differenz zwichen Anfangszeit und Endzeit ausrechenen
if(difftime>=1) //nach einer 1er Sek. ...
{
system("clear"); //Bildschirm löschen:)
printf("wdat: %i\n",wdat); //wdat auf Bildschirm schreiben
gettimeofday( &start,NULL); //Anfangszeit erneut in 'start' speichern
wdat=0; //wdat leer machen für neue messung
}
}
outb(0,0x378); //Strom an allen Pins aus
ioperm(0x378,3,0); //Port(LPT1) schliessen
}
soweit funktioniert alles, ihr könnt ja mal schreiben was ihr davon haltet.
gruß kurm_de
Lesezeichen