Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [Pascal] Data outputten naar een parallelle poort lukt niet... (https://forum.scholieren.com/showthread.php?t=619463)

GeritoDM 04-10-2003 14:53

[Pascal] Data outputten naar een parallelle poort lukt niet...
 
Ik ben voor school bezig met een PWS. De bedoeling is om een lasershow te maken, door middel van twee spiegeltjes elk op een motortje met weer elk een DAC dr bij. En dan een programma schrijven om er leuke figuurtjes mee te tekenen. Nu ben ik dus met Pascal begonnen, omdat onze begeleider en onszelf dat de beste en makkelijkste keus leek. Nu heb ik een test-apparaatje, met acht LED-jes, waarmee je dus vrolijk binair kan tellen. Aangesloten op m'n COM1-poort. Ik heb het volgende test-programma geschreven, maar hij werkt niet. Ik kan wel de waarde van de poort lezen, maar 'em niet veranderen.

Code:

program TestPort;

uses
 Crt;

const
 Data = $1020;

var
 Bits : Byte;

begin
 ClrScr;
 writeln(Port[Data]);
 Bits := 1;
 while not KeyPressed do
  begin
  write(Bits:4);
  if Bits = 256 then
    begin
    Bits := 1;
    write(Bits:4);
    end;
  Port[Data] := Bits;
  Bits := Bits + 1;
  end;
end.


McMotion 04-10-2003 15:03

hoe weet je dat het lezen goedgaat? bedoel je dat je echt waarden terugkrijgt die je verwacht van de hardware? of dat je gewoon uberhaupt waarden terugkrijgt? dat zegt namelijk niet zoveel :) en ik neem aan dat je met paralelle poort seriele poort bedoelt?

GeritoDM 05-10-2003 14:32

Citaat:

McMotion schreef op 04-10-2003 @ 16:03:
hoe weet je dat het lezen goedgaat? bedoel je dat je echt waarden terugkrijgt die je verwacht van de hardware? of dat je gewoon uberhaupt waarden terugkrijgt? dat zegt namelijk niet zoveel :) en ik neem aan dat je met paralelle poort seriele poort bedoelt?
Ik heb dus dat printje met acht LED-jes aangesloten, en daar brandt de derde van, dus 1000 dus 4. En ik krijg dus waarde vier eruit. :)
Maar ehm. Ik denk dat ik dan serieel bedoel, ik weet het verschil nooit. :o

GeritoDM 06-10-2003 19:38

Het is dus de LPT-poort... :o *blont*

Pruttelpot 06-10-2003 19:56

Citaat:

GeritoDM schreef op 06-10-2003 @ 20:38:
Het is dus de LPT-poort... :o *blont*
Dus toch de paralelle :) (die grote brede) :)

Maarem, verder geen pascal kennis hier hoor :)

Screaming Slave 06-10-2003 22:31

ehm, Bits is een Byte, die wordt nooit 256.

pak gewoon een Integer en dan gebruik je telkens (Bits mod 256).

GeritoDM 07-10-2003 11:07

Citaat:

Crystal Method schreef op 06-10-2003 @ 23:31:
ehm, Bits is een Byte, die wordt nooit 256.

pak gewoon een Integer en dan gebruik je telkens (Bits mod 256).

Ach ja, maar dat maakt niet zoveel uit. Die reeksen spuugt-ie wel. :)
Maar het gaat me er meer om dat ik niets naar die poort kan zenden... Ik kan de waarde dus wel lezen, maar er geen nieuwe aan toekennen. Met QuickBasic lukte het wel, op dezelfde computer hetzelfde testapparaatje...

deadlock 07-10-2003 12:45

quickbasic is ook vele malen stabieler. gebruik je TP70? Want onder turbo pascal is er een bug onder wat snellere computers. Pentium 200 en sneller ofzo. Misschien ligt het probleem hier?

GeritoDM 07-10-2003 21:06

Citaat:

deadlock schreef op 07-10-2003 @ 13:45:
quickbasic is ook vele malen stabieler. gebruik je TP70? Want onder turbo pascal is er een bug onder wat snellere computers. Pentium 200 en sneller ofzo. Misschien ligt het probleem hier?
Maar QuickBasic is veels te omslachtig voor wat ik nog meer moet gaan maken...
Maar als ik die bug zou hebben (gebruik 5.5, kan geen frans) zou hij het programma helemaal niet willen draaien. ;)

SectorZero 07-10-2003 21:46

Je output goed, maar je leest anders, namelijk uit het statusregister.

Outputten: Port[port]:=1;
Lezen moet je alsvolgt doen: DataIn=Port[port+1];
vervolgens een vage berekening maken met DataIn, om de waarde 1 te krijgen, maar die weet ik zo niet meer.

Zie ook: http://www.djoe.nl/default.asp?conte...Ledenaandeslag

deathz0rz 07-10-2003 21:49

Citaat:

SectorZero schreef op 07-10-2003 @ 22:46:
Zie ook: http://www.djoe.nl/default.asp?conte...Ledenaandeslag
heel leuk sec0, maar daar zit de source niet bij...

SectorZero 07-10-2003 21:49

Die source is crappy, heeft ie niet veel aan, bovendien ben ik hem kwijt. Het progje werkte echter wel (y)

GeritoDM 08-10-2003 19:36

Citaat:

SectorZero schreef op 07-10-2003 @ 22:46:
Je output goed, maar je leest anders, namelijk uit het statusregister.

Outputten: Port[port]:=1;
Lezen moet je alsvolgt doen: DataIn=Port[port+1];
vervolgens een vage berekening maken met DataIn, om de waarde 1 te krijgen, maar die weet ik zo niet meer.

Zie ook: http://www.djoe.nl/default.asp?conte...Ledenaandeslag

Het lezen werkt juist wel, dat is gewoon write(port[Data]); of Bits := port[Data]; en write(Bits);
Maar de output werkt gewoon niet... En ik weet ook wel hoe het zit met het Data, Status en Control register, maar dat heb ik nu nog niet nodig. Het gaat me alleen om een getal te kunnen sturen naar die parallele poort, hoe dat moet. Dit werkt niet, ook al heb ik het letterlijk gekopieeerd van enkele sites en uit enkele sources voor bijv. het aansturen van stappenmotoren. Maar het lukt gewoon niet, die lampjes gaan niet branden.

En ik heb er niets aan dát dat programmaatje werkt, ik moet weten hóé het werkt. :)

GeritoDM 10-10-2003 08:51

Ik heb de fout ontdekt, het $-teken moest niet voor de waarde van de poort. Het moet dus zijn:
port[956] := 12;
ipv
port[$956] := 12;.


Jeuj. :D Bedankt voor de hulp en zo. :p:)


Alle tijden zijn GMT +1. Het is nu 16:34.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.