Ich habe versucht ein einfaches C-Programm, das auf ein paar Ports
liest/schreibt und unter Linux problemlos arbeitet, unter MS-Win
(Cygwin) mit dem gcc zu compilieren, aber dort fehlen die üblichen
Port-Befehle und die Linux-spezifischen Include-Dateien (speziell
<sys/io.h>).
Wie kann man denn die Ports unter MS-Win auslesen und beschreiben?
Als Workaround könnte man die Assembler-Definitionen der
Port-Funktionien nehmen, aber es sollte doch auch einfacher gehen.
Danke, aber nun habe ich mit dem Beispiel-Programm ein anderes Problem:
Zuerst:
$ gcc -O2 -o port.exe port.c
port.c:12:19: conio.h: No such file or directory
und dann, nach ändern von
#include <conio.h>
in
#include <mingw/conio.h>
gibt es das Problem, das _mingw.h nicht gefunden wird.
Irgendwelche Vorschläge?
Wieso hast Du den Rückgabewert von iopl nach int gewechselt? Ich habe
mir ursprünglich dabei gedacht, dass diese Funktione den Erfolg mit true
signalisiert.
So zu benutzen:
1
intmain()
2
{
3
if(!iopl())
4
{
5
// giveio.sys ist auf diesem system nicht installiert
Ich habe das bool rausgenommen, a) weil es das in ANSI-C nicht gibt (da
gibt's nur _Bool und dafür benötigt man stdbool.h) und b) ist _Bool
überflüssig (>0 ist true, 0 ist false). Meist ist es nämlich so
implementiert:
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
Also das Testen ergab, das das Schreiben funktioniert, aber das Lesen
nicht: Ich lese immer 4304, beispielsweise von 888 und 889, selbst wenn
dort am Parallelport Signale anliegen.
Irgendwelche Vorschläge?
Ok, also:
- mit Argument liefert das fprintf auch einen Wert
- das Einlesen klappte nicht, weil die Status-Pins einen kleinen
Eingangswiderstand haben; mit stärkeren Signalen, z. B. Ping 10 auf
Masse, geht es
- iopl gibt 1 zurück, aber es funktioniert trotzdem