1.5k Aufrufe
Gefragt in Peripherie von
Hi, ich versuche an meinem etwas älteren rechner den Parallelport mittels software anzusteuern.
in der uni verwenden wir win 98 rechner und turbo c.
zu hause habe ich win xp und c.
Da ja win nt standardmäßig die ansteuerung blockiert, hab ich mal google bemüht und bin auf dieser seite gelandet:
http://www.pci-card.com/upd8255.html
ganz unten steht was zu dem thema.
ich hab alles nach Anleitung gemacht, den Treiber installiert und in mein C Programm den vorgegebenen Quelltext eingefügt.
der compiler spuckt mir folgendes aus:

C:\gcc\bin>gcc test.c -o blah.exe -w
c:/gcc/tmp\ccDQ1gLK.o(.text+0x49):test.c: undefined reference to `CreateFileA'
c:/gcc/tmp\ccDQ1gLK.o(.text+0x7a):test.c: undefined reference to `CloseHandle'
collect2: ld returned 1 exit status


was mach ich nun schon wieder falsch?^^
liebe grüße

5 Antworten

0 Punkte
Beantwortet von Experte (3.2k Punkte)
Kompilieren lässt sich der Code.
Der Linker ld meldet einen Fehler. Du musst schon gegen die WinApi linken, um ihre Funktionen (zu denen CreateFile und CloseHandle gehören) nutzen zu können.
laut diesem MSDN-Eintrag musst du gegen die kernel32.lib linken.
dazu müsstest du an die commandline noch ein -lkernel32 anhängen.

Ele
0 Punkte
Beantwortet von
hab ich gemacht, folgendes passiert:
C:\gcc\bin>gcc test.c -o blah.exe -w -lkernel32
c:/gcc/bin/ld.exe: cannot find -lkernel32
collect2: ld returned 1 exit status

wobei die kernel32.dll im system32 ordner steckt-.-
muss die woanders hin?
grüße
0 Punkte
Beantwortet von
Aaalso:
ich hab jetzt das Programm userport verwendet und laut anleitung muss ich da nix weiter in den quellcode schreiben.
nur zeigt mein messgerät jetzt permanent saft an allen pins an-.-

und wenn ich binär ne eins ausgeben will,
brauch ich dann outportb(768,1) oder (378,1)?
lg
0 Punkte
Beantwortet von
Also, ich hab den Minuspol ins 3. Loch von Links der schmaleren Seitegesteckt und + ans 5. von rechts der dickeren.
Theoretisch müsste doch jetzt bei 128 saft raus kommen, oder?
#include <windows.h>
int main(){
outportb(378,128);
printf("programm gestartet");
return 0;
}
nix passiert.
wenn ich mit sonder spielereisoftware saft auf alle pins gebe, dann die software beende, nd mein programm mit 0 starte, bleibt der saft auf den pins-.-
lg
0 Punkte
Beantwortet von
Des Rätsels Lösung:
das is mir schon fast etwas peinlich^^
378 ist der Port, der HEXADEZIMAL angegeben ist.
Unter C wird der Port jedoch dezimal angegeben, was 888 entspricht.
folgendes Funktioniert also
outportb(888,value);
lg
...