Toon posts:

[Delphi] Data pin van lpt poort aan of uitzetten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een bepaalde pin van de lpt poort aan of uitzetten. Het gaat dan om de data pinnetjes (pin 2 t/m 9).

Ik heb deze code geprobeerd, maar die werkt niet. Wie weet wat er aan de volgende code fout is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  // Pin2 aanzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] or $01;


  // Pin3 aanzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] or $02;


  // Pin2 uitzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] and (not $01);


  // Pin3 uitzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] and (not $02);

IOAccess is een componentje dat ik gemaakt heb, waarmee je data naar je lpt poort kunt schrijven en lezen, ongeacht welke windows versie je gebruikt (zowel windows 9x als NT/2000/XP).

PortB is een property waarmee je een Byte kunt schrijven of lezen.

Wat wel werkt is alle pinnetjes aan- of uitzetten met:
code:
1
2
3
  IOAccess.PortB[$378] := 255;
  
  IOAccess.PortB[$378] := 0;

Verwijderd

Ik zie er zo rap niets fouts aan, enige wat ik kan verzinnen is dat het lezen van die port niet goed werkt waardoor je er crap naar terug schrijft?

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 23:11

Knutselsmurf

LED's make things better

Volgens mij komt dit doordat je in 1 statement die property zowel probeert te lezen als te schrijven. Je zou het eens kunnen proberen met een dummy-variabele als tussenstap.
Dus :
dummy:=port;
port:=dummy and $01;

- This line is intentionally left blank -


  • banaan-X
  • Registratie: Februari 2001
  • Niet online
Het werkt waarschijnlijk wel goed, het bleek een fout in mijn schakeling te zijn...

(tokkie helpt mij met de aansturing van 8 LED'jes)

  • snoei
  • Registratie: Maart 2001
  • Laatst online: 14-09 16:38

snoei

kabels... :D

Op zondag 23 september 2001 14:37 schreef tokkie het volgende:
Ik wil een bepaalde pin van de lpt poort aan of uitzetten. Het gaat dan om de data pinnetjes (pin 2 t/m 9).

Ik heb deze code geprobeerd, maar die werkt niet. Wie weet wat er aan de volgende code fout is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  // Pin2 aanzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] or $01;


  // Pin3 aanzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] or $02;


  // Pin2 uitzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] and (not $01);


  // Pin3 uitzetten
  IOAccess.PortB[$378] := IOAccess.PortB[$378] and (not $02);

IOAccess is een componentje dat ik gemaakt heb, waarmee je data naar je lpt poort kunt schrijven en lezen, ongeacht welke windows versie je gebruikt (zowel windows 9x als NT/2000/XP).

PortB is een property waarmee je een Byte kunt schrijven of lezen.

Wat wel werkt is alle pinnetjes aan- of uitzetten met:
code:
1
2
3
  IOAccess.PortB[$378] := 255;
  
  IOAccess.PortB[$378] := 0;
Die component, zou je die ook ff kunnen posten?? bvd

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18:04

Creepy

Tactical Espionage Splatterer

code:
1
IOAccess.PortB[$378] := 255;

Dit werkt wel ja. Maar met lezen van de par.poort moet je uitkijken. Dit gaat lang niet altijd goed, ligt er maar weer net aan hoe je lpt poort staat ingesteld (ecp/spp/epp etc).

Het beste wat je kunt doen is alles met een dummy var doen.
code:
1
2
3
4
5
6
7
// init.
dummy:=0;
dummy:=1 or 4 or 8;
IOAccess.PortB[$378]:=dummy;
// bla die bla.. een hoop code/events hiero whatever.
dummy:=dummy or 32; //bit 6 aanzetten
IOAccess.PortB[$378]:=dummy;

Zo weet je altijd welke pinnen er geset zijn, en welke niet, en hoef je daarvoor de par.poort niet uit te lezen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1