Toon posts:

[Pascal] met lpt

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok mensen daar ben ik weer met de lpt vragen, ik was eerst van plan een programma te schrijven in c++ maar ik ben toch over gestapt naar pascal. Op internet is er inderdaad al aardig wat te vinden voor een pascal programma dat LED's kan aansturen met de lpt poort.
Alleen alles wat ik vind zitten fouten in en ik weet niet precies wat het poort command is.
Wat ik nu heb:

code:
1
2
3
4
5
6
7
8
9
program LED (input, output);
uses Crt;
var

begin
clrscr;
port[$378]:=00000001;

end.


Ik heb mijn LPT in de bios op 378 gezet dus dat klopt. ik wil dus in dit test progje de binaire waarde "00000001" sturen naar de lpt poort maar ik weet niet wat voor variablen ik moet declareren. Ik heb het al aan anderen gevraagd e.d. maar die weten het ook niet precies. Wiet iemand anders het misschien??? _/-\o_

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Allereerst kan je nooit een binaire waarde op die manier omschrijven in pascal. Je zal het moeten omschrijven als een decimaal, octaal of hexadecimaal getal.

bin 000000001 = 1 dec

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Ok, maar hoe pas ik die voorbeeldcode dan aan zodat die decimale waarde 1 word weggeschreven? En hoe zit het met de variabelen

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-08 21:27

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 20 February 2003 @ 17:06:
Ok, maar hoe pas ik die voorbeeldcode dan aan zodat die decimale waarde 1 word weggeschreven? En hoe zit het met de variabelen
Eehh.. port[378] is in feite te gebruiken als een var
port[378]:=1; kan dus prima

en code als
a:=1;
b:=7;
port[378]:=a+b;

kan dus ook gewoon.

"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


Verwijderd

Topicstarter
Creepy schreef op 20 februari 2003 @ 17:20:
[...]

Eehh.. port[378] is in feite te gebruiken als een var
port[378]:=1; kan dus prima

en code als
a:=1;
b:=7;
port[378]:=a+b;

kan dus ook gewoon.
Ok maar zou je jou voorbeeld kunnen gebruiken in min voorbeeld zodat dit een kloppend programma word.
Alvast Bedankt

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 14:35

Knutselsmurf

LED's make things better

Zo op het oog zou je code gewoon moeten werken. Vraag is dus, gebeurt dat ook? Krijg je een foutmelding? Zo ja, welke? Zo nee, wat gebeurt er wel? Als je geen variabelen gebruikt, hoef je ze ook niet de declareren.

- This line is intentionally left blank -


  • Tommel
  • Registratie: November 2000
  • Niet online
Heb (denk ik) nog wel een programma hier liggen die dit doet, zal zo ff kijken

Edit: Sorry, was voor de com poort :(

[ Voor 21% gewijzigd door Tommel op 21-02-2003 18:09 ]


Verwijderd

Topicstarter
Knutselsmurf schreef op 20 February 2003 @ 19:04:
Zo op het oog zou je code gewoon moeten werken. Vraag is dus, gebeurt dat ook? Krijg je een foutmelding? Zo ja, welke? Zo nee, wat gebeurt er wel? Als je geen variabelen gebruikt, hoef je ze ook niet de declareren.
Als ik mijn programma compile dan heb ik 1 foutmelding namelijk:

"Fatal: Syntax error, indentiefier expected but BEGIN found"
Tommel schreef op 20 February 2003 @ 19:05:
Heb (denk ik) nog wel een programma hier liggen die dit doet, zal zo ff kijken
Als je nog wat hebt heel graag, ik ben er echt al dagen aan bezig maar ik kom er niet uit

Verwijderd

uhm.....

jongens, vergeten jullie niet iets?

ik zie hier in een oud leerboek:

port[$378]:=$35;

dus i.p.v. decimaal gewoon alles op HEX zetten.

en een voorbeeld met input:

if port[$77A] =53

(laatste om te kijken of lpt1 een ecp poort is. vantevoren wel ff $35 er naar toe sturen

suc6

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Het maakt natuurlijk niet uit of je het hexadicimaal, decimcaal of octaal aangeeft, als het maar het correcte nummer is, maar je hebt gelijk duck_lucifer. Het moet 378 hex zijn en niet dec. 888 dec had ook goed geweest ipv 378 hex.

We adore chaos because we like to restore order - M.C. Escher


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Verwijderd schreef op 20 February 2003 @ 19:20:
[...]


Als ik mijn programma compile dan heb ik 1 foutmelding namelijk:

"Fatal: Syntax error, indentiefier expected but BEGIN found"
Haal die 'var' eens weg voor je 'begin'. Dit is toch aardig basic pascal (leuk woordspeling :)) en het is dus misschien een goed idee om eens een boek over pascal uit de bibliotheek te halen.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Opzich weet ik wel redelijk wat van pascal maar als ik "var" weghaal krijg ik alleen meer errors. En ook als ik alles in Hex. notatie zet blijf ik die ene error krijgen van die Fatal syntax error. Ik denk dat er toch iets kwa variabelen moet worden gedeclareerd, maar ik kan echt nergens iets vinden daarover. Vaak zie je wel dit soort dingen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Program LPTout;

uses crt;

var
addr:word;
data:integer;

begin
addr:=MemW[$0040:$0008];
clrscr;
write('geef de decimale waarde op die naar de LPT moet worden gestuurd -->');
read(data);
Port[addr]:=data;

end.


Hier laat je dus het adres van je lpt poort rechtstreeks uit je BIOS halen maar dit werkt ook niet, ook allemaal errors.
Zou het misschien te maken kunnen hebben met Win XP pro wat ik gebruik??

[ Voor 61% gewijzigd door Verwijderd op 20-02-2003 21:47 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, dat zeker. Dat mag niet onder NT/2000/XP, wel onder DOS/3.11/95/98/ME. Maar het zou wel moeten compilen. Geef je code en de foutmelding + regelnummer en dan kunnen we je misschieh verder helpen.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Het gaat om deze code:
code:
1
2
3
4
5
6
7
8
9
 program LED (input, output);
uses Crt;
var

begin
clrscr;
port[$378]:=00000001;

end.

Bedoeling is dus dat binaire getal naar de poort te sturen.
De fout die ik steeds krijg zit in "port[$378]:=00000001;"
De foutmelding van de compiler is zoals ik eerder had gepost:

"Fatal: Syntax error, indentiefier expected but BEGIN found"

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je geeft weer geen nieuwe en verkeerde informatie en hebt ook de fouten die we aangaven niet opgelost. Terug naar deze plaats

[ Voor 3% gewijzigd door LordLarry op 21-02-2003 12:59 ]

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Verwijderd schreef op 20 February 2003 @ 21:43:
Opzich weet ik wel redelijk wat van pascal maar als ik "var" weghaal krijg ik alleen meer errors.
Ik heb al geprobeerd dat var wegtehalen en zoals eerder was gemeld te werken met Hex. cijfers maar ook hier komen alleen maar meer fouten naar voren. Daarnaast heb ik al zat voorbeelden van programma's gezien met allemaal verschillende notaties (dus binair, decimaal, hexadecimaal) en niks werkt :|

Verwijderd

var moet echt weg hoor... of je moet eerst variabelen declareren.. Nu ziet de compiler begin als een variabele..

[ Voor 28% gewijzigd door Verwijderd op 21-02-2003 13:24 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Meer fouten betekend niet dat het slechter is, het zijn fouten waar ie anders nooit aan toe kwam. Die var in de code die je daar schrijft staat daar zo ie zo fout. Of heb jij nu meer ervaring in pascal dan mij? Ik denk dat dit een hopeloos topic is geworden en je andere topics zijn niet veel beter. Ik denk dat ik maar stop met jouw helpen...

/edit
Of beken gewoon dat je er niets van kan (is niet erg) en dat wij je moeten helpen, maar doe dan niet of je het beter weet. En als je dat bekend hebt stel ik voor dit topic te sluiten, want dan is het een 'aan het handje houden' topic geworden en moeten we uiteindelijk alle code voor je schrijven.

[ Voor 36% gewijzigd door LordLarry op 21-02-2003 13:30 ]

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Best LordLarry ik wil absoluut niet zeggen dat ik beter ben in programmeren in pascal dan jij, zowiezo vind ik het vreemd dat je je dat meteen aantrekt. Het kan mij echt niet schelen dat iemand beter in iets is dan ik zelf, daarom vraag ik ook iemands hulp, aan iemand die het waarschijnlijk beter weet of meer ervaring heeft. Het enige waar ik achter probeer te komen is hoe ik de code goed krijg om die bepaalde waarde naar de poort te sturen. Op internet staan er al voorbeelden maar als ik die voorbeelden pak dan werken ze gewoonweg niet. Ook na enig rondvragen kan niemand mij verder helpen. Daarnaast vind ik dit absoluut geen aan het handje houden topic, ik vraag gewoon vriendelijk of een mede bezoeker van dit forum mij kan helpen aan een klein stukje code. Zodra dit lukt ben ik allang blij want dan kan ik zelf verder.

Als er nog mensen zijn die mij willen helpen met dit probleem graag:

code:
1
2
3
4
5
6
program LED (input, output);
uses Crt;
begin
clrscr;
port[$378]:=00000001;
end.


Als ik deze code compile krijg ik de volgende drie fouten:
Error: indentifier not found PORT
Error: illegal qualifier
Fatal syntaxis error, ] expected but ordinal const found

Het betreft hier weer de regel "port[$378]:=00000001;"

Verwijderd

hmm.. welke pascal versie gebruik je?? input output is heel ouderwets namelijk..

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-08 21:27

Creepy

Tactical Espionage Splatterer

port zat volgens mijn in de DOS unit.. maar nogmaal: onder Windows NT/2000/XP zal dit nooit werken.

En het gebruik van input/output is in nagenoeg elke Pascal compiler nog toegestaan.

"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


Verwijderd

Topicstarter
Ik gebruik de editor bloodshed Dev-pascal 1.9 met free pascal compiler 1.0
Ik zie niet zo snel om wat voor versie van pascal het gaat maar dit is de recenste die ik kon vinden en kan daarnaast ook windows programma's maken.

Als ik dat (input, outpt) weghaal blijf ik precies dezelfde fouten behouden

Verwijderd

Topicstarter
Creepy schreef op 21 February 2003 @ 14:00:
port zat volgens mijn in de DOS unit.. maar nogmaal: onder Windows NT/2000/XP zal dit nooit werken.

En het gebruik van input/output is in nagenoeg elke Pascal compiler nog toegestaan.
Dus ik zou het programma moeten maken op een win98 machine denk je? En dan zouden de errors die ik steeds krijg weg zijn.

Verwijderd

Creepy schreef op 21 February 2003 @ 14:00:
port zat volgens mijn in de DOS unit.. maar nogmaal: onder Windows NT/2000/XP zal dit nooit werken.

En het gebruik van input/output is in nagenoeg elke Pascal compiler nog toegestaan.
hmmm dat zou best kunnen ja... probeer er anders inderdaad eens
Uses Dos, Crt;
van te maken

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 14:35

Knutselsmurf

LED's make things better

Verwijderd schreef op 21 February 2003 @ 14:01:
Ik gebruik de editor bloodshed Dev-pascal 1.9 met free pascal compiler 1.0
Ik zie niet zo snel om wat voor versie van pascal het gaat maar dit is de recenste die ik kon vinden en kan daarnaast ook windows programma's maken.

Als ik dat (input, outpt) weghaal blijf ik precies dezelfde fouten behouden
Ik heb het idee dat je de reacties heel selectief leest. Er is namelijk al 10000 keer gezegd dat deze code NOOIT zal werken onder windows 95/98/NT/2K/XP/whatever, omdat je onder windows niet rechtstreeks je poorten aan mag spreken. Als je dan alle andere regels van je code gaat wijzigen en dan terugkomt met de opmerking 'zo werktie ook niet', krijg ik toch sterk een klok-klepel gevoel. Mijn tips:
1) Lees ALLE reacties.
2) Ga onder DOS programmeren.
3) Pak er nog eens een boek bij.

- This line is intentionally left blank -


Verwijderd

Topicstarter
Knutselsmurf schreef op 21 februari 2003 @ 14:07:
[...]

Ik heb het idee dat je de reacties heel selectief leest. Er is namelijk al 10000 keer gezegd dat deze code NOOIT zal werken onder windows 95/98/NT/2K/XP/whatever, omdat je onder windows niet rechtstreeks je poorten aan mag spreken. Als je dan alle andere regels van je code gaat wijzigen en dan terugkomt met de opmerking 'zo werktie ook niet', krijg ik toch sterk een klok-klepel gevoel. Mijn tips:
1) Lees ALLE reacties.
2) Ga onder DOS programmeren.
3) Pak er nog eens een boek bij.
Ok, ok sorry dat ik dit heb gedaan, maar wat voor editor onder DOS raad je mij aan waarvan je zeker weet dat ie werkt

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-08 21:27

Creepy

Tactical Espionage Splatterer

Knutselsmurf schreef op 21 February 2003 @ 14:07:
[...]

Ik heb het idee dat je de reacties heel selectief leest. Er is namelijk al 10000 keer gezegd dat deze code NOOIT zal werken onder windows 95/98/NT/2K/XP/whatever, omdat je onder windows niet rechtstreeks je poorten aan mag spreken. Als je dan alle andere regels van je code gaat wijzigen en dan terugkomt met de opmerking 'zo werktie ook niet', krijg ik toch sterk een klok-klepel gevoel. Mijn tips:
1) Lees ALLE reacties.
2) Ga onder DOS programmeren.
3) Pak er nog eens een boek bij.
Pot... ketel.....Onder 95/98 en ME werkt het namelijk WEL! ;)

En aan de TS: de foutmeldingen die je krijgt heeft NIKS met het OS te maken. De compiler zegt dat hij port niet kent. Deze zit waarschijnlijk in een andere unit, of is helemaal niet bekent in de units die bij jou pascal compiler zijn meegeleverd. Zoals ik al eerder heb aangegeven dat het best wel eens zou kunnen dat deze in de DOS unit zot (pure gok trouwens, ik dacht dat het onder Turbo Pascal zo was...).

Als je een windows prog. wilt maken die de lpt poort aanstuurt, score dan ergens een trail, personal of open edition van Delphi, download DLPortI/O en gaan. M.b.v. DLPortI/O kan je I/O poorten aansturen onder elk Windows OS. Voor vragen e.d. over DLportI/O verwijz ik je naar de seach en naar google, want informatie hierover is erg goed te vinden.

Ennuh... misschien word het eens tijd voor een pascal boek o.i.d.?

"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


Verwijderd

Topicstarter
Thx Creepy, ik probeer even verder, ik laat nog even weten hoe de vorderingen zijn

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-08 22:26

Tomatoman

Fulltime prutser

Met die houding van 'ik probeer even verder' kan ik je nu alvast voorspellen dat het je niet gaat lukken. Je leert toch ook niet autorijden zonder theorie-examen te doen? Als je de verkeersregels niet kent, weet je ook niet wat je allemaal fout doet.

Even een paar citaten uit de discussie hierboven:
  • Dit is toch aardig basic pascal (leuk woordspeling :)) en het is dus misschien een goed idee om eens een boek over pascal uit de bibliotheek te halen.
  • 3) Pak er nog eens een boek bij.
  • Ennuh... misschien word het eens tijd voor een pascal boek o.i.d.?
Laat ik je toch maar op weg helpen. Download Borland Delphi Personal 7.0 gratis van het Borland Developers Network (eerst even aanmelden). Dan heb je een uitstekende, zeer recente en tevens de meestgebruikte programmeeromgeving voor Pascal. Delphi werkt met de programmeertaal Object Pascal. Als je een 'console application' maakt (zie de helpfiles voor een prima uitleg), kun je precies de programmacode compileren die je nu ook aan het schrijven bent. Het programma compileert onder alle 32-bits Windowsversies, maar doordat je direct een poort aanroept werkt het alleen zoals je wilt onder Win95/98/Me.

Pak er trouwens eens een boek bij :)

Een goede grap mag vrienden kosten.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dit zou moeten werken, maar alleen onder DOS, dus niet Windows!!!
code:
1
2
3
4
program LED ;
begin
port[$378]:=1;
end.

En als het dat niet doet, lees je deze thread nog maar eens een keer heel erg goed, want het is je al 1000 keer voorgekauwd...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

--------------

[ Voor 160% gewijzigd door Verwijderd op 22-02-2003 12:00 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-08 21:27

Creepy

Tactical Espionage Splatterer

RobIII schreef op 22 February 2003 @ 02:19:
Dit zou moeten werken, maar alleen onder DOS, dus niet Windows!!!
code:
1
2
3
4
program LED ;
begin
port[$378]:=1;
end.

En als het dat niet doet, lees je deze thread nog maar eens een keer heel erg goed, want het is je al 1000 keer voorgekauwd...
Het zou schelen als je zelf ook ff de gehele thread zou lezen.. want dit heeft de T.S. ook al geprobeert en dan krijgt ie de melding dat PORT niet bekend is.. en nogmaals.. als de boel wel compilet draait dit ook onder windows 95/98 en ME (maar dus NIET onder nt/2000/xp)

"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