Hallo zusammen
Ich versuche meinen Parallel Port zum einlesen von Daten zu verwenden.
Bis jetzt habe ich es hingekriegt, serielle Daten einzulesen (Clk an
ACK, Data an ERROR Eingang). Nun will ich die Daten aber parallel
einlesen an den 8 I/O-Pins.
Allerdings scheitere ich daran, dass meine Software nur immer 0xFF
einliest.
Unten stehend ein Minimalbeispiel, dass ich aus dem wiki kopiert habe:
1 | #include <stdio.h>
|
2 | #include <linux/ppdev.h>
|
3 | #include <fcntl.h>
|
4 | #include <sys/ioctl.h>
|
5 |
|
6 | int main(int argc, char ** args)
|
7 | {
|
8 |
|
9 | int port;
|
10 | port = open( "/dev/parport0", O_RDWR );
|
11 | ioctl( port, PPCLAIM, NULL );
|
12 |
|
13 | unsigned char r;
|
14 |
|
15 | int i;
|
16 | // i = 0; // Tri-State '''aus''' (Der PC treibt die Data-Leitungen)
|
17 | i = 1; // Tri-State '''an''' (Der PC treibt die Data-Leitungen '''nicht''')
|
18 | ioctl( port, PPDATADIR, &i );
|
19 |
|
20 | while(1){
|
21 | ioctl( port, PPRDATA , &r ); // liest das "data" Register
|
22 | printf("0x%X\n", r);
|
23 | }
|
Mein Problem:
Ich kann zwar Daten an den I/O-Pins ausgeben, aber nicht einlesen.
Im BIOS habe ich bereits herumgespielt mit allen 3 Optionen:
Bidirectional, ECP, EPP.
Kann es sein, das mein Laptop (Thinkpad R40) den Parallel Port nicht
vollständig ansteuern kann? Als OS verwende ich Linux mit Kernel 2.6.37,
habe aber auch schon andere 2.6er Kernel getestet.