Avatar billede Slettet bruger
20. marts 2000 - 23:24 Der er 3 kommentarer

hjællp parallelports spørgsmål...igen

hej igen
nu har jeg fået en turbo pascal kode der lyder sådan:

Program lpt2_output;

Uses Dos;

Var
  addr:word;
  data:byte;
  e:integer;

Begin
  addr:=MemW[$0040:$000A];
  Val(ParamStr(1),data,e);
  Port[addr]:=data;
End.

til at styre parallel porten men hvordan bruger jeg programmet
det med at lave det til en exe fil er ikke noget problem men at bruge programmet det er der pro. ligger
er der en der kan hjælpe mig??
Avatar billede sjensen Nybegynder
21. marts 2000 - 13:58 #1
du kan kun bruge det i dos (eller p^win95 og 98.

Ved doskommandolinien skal du skrive programnavnet og umiddelbart efter den teklst du vil have printeren til at skrive.

Lad os sige dit program hedder "LPTOUT.EXE" og du vil have skrevet teksten "Hello" ud på printeren, så skal du skrive, ud for dos-promptet:

LOPOUT hello

linien:

Val(ParamStr(1),data,e);

omdanner parameter 1 på kommandolinien (d.v.s. det første der kommer efter selve programnavnet inden næste mellemrum) til data, men da data er af typen Byte (og du bruger val) vil det i mit ex. betyde at du kun får udskrevet et tegn af ordet "Hello". Og fordi du omdanner det med VAL() bliver det ascii-værdien for stort H der bliver overført til printeren. Stort H har værdien 72 decimalt i Ascii-tabellen, og når printeren modtager en ASCII-værdi omsætter den det til det tegn den kender i dens indbyggede Ascii-tabel, hvilket i de fleste tilfælde også er H (måske er det anderledes for kinesiske tegn o.s.v.) mem normalt vil det bare være H.

Så hvis du skriver

LPTOUT Hello

ved dos-prompt, skriver printeren bare

H

Så er den ikke længere.

Hvis du ville have printeren til at skrive hele ordet skulle programmet have været lavet således:


Program lptout;

Uses Dos;

Var
  i : integer;
  s : string[255];

procedure out_char(b : byte);
var
  addr:word;
begin
  addr:=MemW[$0040:$000A];
  Port[addr]:=b;
end;

Begin
  s := paramstr(1);
  if s <> '' then
  begin
    for i := 1 to length(s) do out_char(s[i]);
  end;
End.

Så ville LPTOUT Hello skrive hele ordet "Hello"

Kan du se fidusen ?
Avatar billede sjensen Nybegynder
21. marts 2000 - 14:03 #2
Men dit lille program kan f.eks. bruges til at få printeren til at skifte side, fordi kommandoen til printeren om at skifte side kun er på et tegn, nemlig Ascii værdien 12 (FormFeed).

denne værdi kan man skrive som et tekst "^L" ved at holde på ALT tasten mens man trykker 12 på det numeriske tastatur.

Programmen kunne derfor bruges således:

LPTOUT ^L

og ville så sende en formfeed til printeren der vil spytte papiret ud, eller en side frem.
Avatar billede Slettet bruger
21. marts 2000 - 20:06 #3
øhhh
hvis jeg gerne vil have den til at sidde strøm på pin 1 og 2 hvordan gør jeg det.
efter at have læst dit svar har jeg lige fåndet ud af at det ikke er det jeg skal bruge
jeg skal bruge et program der kan åbne for pin 1 og 2 har du sådan et???

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Capgemini Danmark A/S

AI Data Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporter til lokal IT støtte i Tirstrup

Forsvarets Efterretningstjeneste

Network engineer - Datacenter & Automation

Politiets Efterretningstjeneste

Platform Engineer hos PET