webForumDet fria alternativet

Parallellporten

C/C++

5 svar · 354 visningar · startad av Reza

Medlem sedan feb. 2001107 inlägg
Frågan#1

Jag skulle vilja tända och släcka en lysdiod från parallellporten i min PC.

Lysdioden är kopplat till pin 2 (DATA 0) och pin 18 (Grnd).

Jag har provat med _outp(0x0378, 0x01); men det fungerar tydligen inte under NT, 2000 eller XP.
Hur ska jag lösa problemet???

Tacksam för Kod exempel.

Medlem sedan aug. 2001458 inlägg
#2

Ett vanligt program i usermode kommer som du märkt inte åt hårdvaran i ett NT-baserat system. Man får skriva en drivrutin som exekverar i kernelmode, och låta sitt program kommunicera via denna. Se exempelvis: http://www.beyondlogic.org/porttalk/porttalk.htm

Medlem sedan juni 20022 599 inlägg
#3

En annan (liknande) lösning är att installera den generella kerneldrivern giveio.sys.

En process får total hårdvaruaccess även i NT/2000/XP enkelt genom enbart följande kod:

    h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,
					OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if(h == INVALID_HANDLE_VALUE) {
        printf("Couldn't access giveio device\n");
        return -1;
    }
	CloseHandle(h);

Efter det fungerar anrop som _outp precis som på 9x. För att installera drivern krävs instdrv.exe från DDK:en (finns även att ladda ner lite varstans).

Medlem sedan juli 200268 inlägg
#4

hej!

jag undrar om du har någon länk (gärna svensk?) med hur man kopplar in enklare saker via paralellporten och sen "styr" dom, t.ex får en buzzer att tjuta, en diod att lysa osv.. eller att man känner av vilket läge en switch står i..

vore uppskattat! ;)

Medlem sedan juli 20021 363 inlägg
#5

reza.. gå in på http://forum.sweclockers.com/ där finns det mängder med sånt här göjs

Medlem sedan juli 200268 inlägg
#6

jag sökte på "diod" och lite annat gott på programmeringsforumet, hittade ingenting! :q

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)