PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Parallelport lesen (A/D Converter)



Fab102
22-04-2002, 23:24
Hallo Leute
Es geht um folgendes. Von einem selbstgebauten Analog/Digital Converter kommen Signale über den parallelport in den Rechner. Jetzt sollte ich ein Programm schreiben welches die Signale auswertet : Bzw.. ein Koordinatensystem zeichnet. Mit einer Zeit (sek.) und Volt Achse (von 0 bis ca. 5 Volt)
Je nach Voltage des Signals wird ein Punkt im Koordinatensystem gezeichnet. Das ganze sollte aber ziemlich flüssig werden, also eine Funktion (Kurve). Datenrate = ich dachte ca. 4 Punkte pro sec. sollten genügen. Alles natürlich in REALTIME , die Kurve sollte also nicht aufhören, bis mit einer Taste abgebrochen wird oder das Signal weg ist.
Was denkt ihr , ist das möglich ??? (C kann ich schon , nur hab ich mich nie mit dem Parallel Port beschäftigt).
Könnt ihr mir ein wenig starthilfe geben ? Wie kann ich die Siganel einlesen und dann puffern ? etc.. ich glaube die grafische Darstellung wird kein Problem sein. Ich dachte da an die g2 Lib (für X).
Danke
MFG
Numez

Vodi
23-04-2002, 08:40
Schau dir mal die folgenden Seiten an:
http://www.lvr.com/parport.htm
http://www.torque.net/linux-pp.html

Dort müsstest Du Beispielprogramme und Dokumentationen finden.

MfG
Christian

geronet
23-04-2002, 17:27
Hallöchen Fab102,

mein Programmchen hier setzt die 8+4 Pins des Parallelport auf High oder Low für ein Parallelportinterface, jenachdem was man angibt. Bestimmt kannst du was draus lernen..

Fab102
23-04-2002, 22:00
Hallo .. so weit bin ich gekommen. Nun, ist natürlich nur Basic. Noch nichts grafisch oder so... aber ich kriege als Output immer 3 Volt .. hab ich da was falsch gemacht ?
(egal ob ich den Converter anschliese usw.. )

# include <asm/io.h> /* fuer outb() und inb() */
# include <stdio.h> /* Standart I/O */
# include <unistd.h> /* fuer ioperm() */

# define DATA 0x378 /*Paraport Adresse*/
# define STATUS DATA+1 /*Status Port*/
# define CONTROL DATA+2 /*Control Port*/

int main (void)

{
int x;
int h = 0;
if (ioperm(DATA,3,1))

{
printf("Keine Berechtigung auf den Parallelport zuzugreifen\n");
printf("Sie benoetigen Root Status\n");
exit (1);
}

for (h=1; h <= 10000 ; ++h )

{
x = inb(DATA);
printf("Signal : %d, Volt\n" );
}
return (0);
}

anda_skoa
23-04-2002, 22:41
Ich hab noch ein HOWTO gefunden:
http://www.tldp.org/HOWTO/mini/IO-Port-Programming.html

Ciao,
_