Avatar billede atox Nybegynder
22. november 2001 - 18:44 Der er 35 kommentarer og
1 løsning

Lpt port

Jeg har et program hvor jeg kan bestemme hvilke ben som skal være æbne og lukket på min Lpt port. det bruger jeg til at styrere nogle dioner som jeg har og får den til at blinke o forskellig rækkefølge.

Når jeg sender data ud gor jeg det ved at give porten f.eks dataen 128. 

Hvis jeg så gerne vil have den pin til f.eks at skulle og tænde hvordan gør jeg så det???

KAn jeg give den dataen f.eks 010101 på en eller anden måde???

Jeg bruger driveren DLPortIO
Avatar billede atox Nybegynder
22. november 2001 - 18:46 #1
Hvis jeg så gerne vil have den pin til f.eks at skulle slukke og tænde hvordan gør jeg så det???
Avatar billede nca Juniormester
22. november 2001 - 19:12 #2
Du skal tænke binært
128 ser sådan du:
1000000

Der hvor der 1 kommer der lys. Hvis den skal slukkes skal du altså sende 0 ud på porten for 0 er binært 00000000

Hvis du har den 1. og 4. diode tændt (sendt tallet 128+16) og kun ønsker at slukke den første kan du bruge kommandoen 16.

Det kan gøres meget fikst vha. and-sætninger
Avatar billede cautoo Nybegynder
23. november 2001 - 11:46 #3
lyttter...
Avatar billede speedy Nybegynder
23. november 2001 - 20:56 #4
Jeg har engang lavet det samme (det var sjovt :)
og dengang lavede jeg en funktion til at konvertere.

Det kunne være du kunne bruge den:

function BinToInt(bin: string): integer;
var
  i: integer;
begin
  result := 0;
  for i := length(bin) downto 1 do
    Inc(Result, round(power(2,(length(bin) - i))) * StrToInt(bin[i]));
end;


Du kan bruge den sådan:

BinToInt(\'10101010\');

Så får du tallet 170 ud, som så tænder hver anden diode hvis du sender 170 ud til parallelporten

/SpEeDy
Avatar billede cautoo Nybegynder
23. november 2001 - 20:59 #5
ren nysgerrighed: Kan man sætte dioder direkte til de enkelte pinde??? og er det alle pindene man kan med eller kun nogle?
Avatar billede speedy Nybegynder
23. november 2001 - 22:04 #6
cautoo>>Ja, der er 8 databen som du bare kan sætte dioder i. Det ene ben skal i et af databenene og det andet skal i et af de 8 GROUND ben.

http://www.howstuffworks.com/parallel-port1.htm

her kan du se hvad de forskellige ben er/gør

/SpEeDy
Avatar billede dkn Nybegynder
25. november 2001 - 16:06 #7
Bare sig hvilke pins du vil kunne tænde og slukke. Det er faktisk ret nemt, ud fra det du har skrevet fik jeg det til at virke.

Der er sindsyg mange muligheder for at tænde og slukke for pin´s.
Det bedste er at prøve sig frem.

Prøv med pin 21, den kan gi strøm sammen med pin 2, 3, 4, 5, 6.
Hvis du sender det rigtige.
Avatar billede dkn Nybegynder
25. november 2001 - 22:29 #8
speedy -> Du har ret, det er skide sjovt! :)
Avatar billede dkn Nybegynder
27. november 2001 - 17:05 #9
Ok jeg har undersøgt en del om lpt porten.
Ved at sende pågældende Tænder du for den angivne pin:

PIN 2 = $01
PIN 3 = $02
PIN 4 = $04
PIN 5 = $08
PIN 6 = $10
PIN 7 = $20
PIN 8 = $40
PIN 9 = $80

Du kan jo prøve at sende nogle af de koder som jeg har skrevet vedhjælp af DLPortIO.

Ligenu er jeg igang med at finde de rette beskeder til at lukke en pin med igen.
Jeg ved at man kan sende: $00 eller bare noget med 0 og så slukker de alle.
Men jeg vil gerne kunne slukke en bestemt pin.

Pin 2..9 udgiver + strøm, og du kan bruge stelet på computeren som -.

Hvis jeg finder ud af mere vil jeg fortælle dig om det.

dkn

Avatar billede speedy Nybegynder
27. november 2001 - 17:26 #10
dkn>>Du kan bare lægge dem sammen for at tænde flere.

Hvis du vil tænde Pin1 og Pin2 kan du and\'e dem sammen.

Altså hvis du vil tænde Pin1, Pin2 samt Pin5 skriver du denne værdi ud:

$01 and $02 and $08

Så er det kun de tre der er tændt

/SpEeDy
Avatar billede dkn Nybegynder
27. november 2001 - 18:03 #11
ja men hvis du jeg har tændt for alle pins, hvordan kan jeg så slukke pin 5 f.eks. ?
Avatar billede speedy Nybegynder
27. november 2001 - 18:22 #12
dkn>>Det kan du ikke...du SKAL fortælle hver gang hvilke der skal være tændte og hvilke der skal være slukkede

/SpEeDy
Avatar billede speedy Nybegynder
27. november 2001 - 18:24 #13
og jeg har gjort en fejl :)

Du skal bruge OR i stedet for AND

$01 or $02 or $08

/SpEeDy
Avatar billede nca Juniormester
27. november 2001 - 19:24 #14
Hvis du har tændt for alle dine bits er dit mønster flg:
11111111
Hvis du vil slukke bit 5 skal dit nye mønster se således ud
11101111
Altså sender du 255-64 (191) af sted.
Hvis du ikke ved hvilke pærer, du har tændt, men ønsker at slukke for 5\'eren og bibeholde de andre skal du ta\' det sidst sendte tal og AND med 192. Resultatet sender du så til porten.
Avatar billede dkn Nybegynder
27. november 2001 - 19:47 #15
speedy -> Hvis man kan få den til at lægge dem sammen så de den tænder flere, kan man vel også trække dem fra hinanden?
Avatar billede speedy Nybegynder
27. november 2001 - 20:33 #16
dkn>>jeg forstår ikke helt hvad du mener ?

/SpEeDy
Avatar billede dkn Nybegynder
27. november 2001 - 21:55 #17
hehe, nej men hvis man kan lægge værdier sammen og få den til at tænde flere, må man jo næsten også kunne trække værdier fra hinanden så den ikke tænder den værdi man trækker fra.

ikke?

dkn
Avatar billede speedy Nybegynder
27. november 2001 - 22:07 #18
nej, der skal du gøre det modsatte, og tænde dem du vil have tændt, resten slukker automatisk

/SpEeDy
Avatar billede loproc Praktikant
28. november 2001 - 11:42 #19
Kan man lokke dig til at poste sourcen og den komponent du har brugt?
Kan man også få input, altså så computeren reagerer på signal på et ben?
Avatar billede atox Nybegynder
28. december 2001 - 20:02 #20
BAre glem det...
Avatar billede nca Juniormester
28. december 2001 - 21:15 #21
Det var dog en besynderlig måde at lukke spørgsmålet på.
Er du fuldstændig ligeglad med alle de mennesker, der har forsøgt at hjælpe dig??
Avatar billede atox Nybegynder
28. december 2001 - 21:33 #22
Nej, men der kom ikke et svar som jeg kunne bruge, og så syntes jeg ikke at jeg ville vente mere da der ikke var kommet nye svar i et stykke tid...
Avatar billede speedy Nybegynder
28. december 2001 - 22:35 #23
Vi er mange der har svaret præcis på det du spurgte om! Det er en rigtig dårlig idé at lave et spørgsmål som man får besvaret, og så bagefter tage sine point igen!

Du spurgte om man ikke kunne \"give den dataen f.eks 010101 på en eller anden måde???\" og jeg svarede endda med en smart funktion som kunne nøjagtig det du skulle bruge.

Jeg er skide ligeglad med points, men jeg synes bare ikke det er fair, når folk bruger tid på at hjælpe dig, og du så bare nupper dine points igen!

/SpEeDy
Avatar billede atox Nybegynder
30. december 2001 - 16:48 #24
Stik mig din e-mail... så kan du selv se om det som du har skrevet virker... jeg kan ikke få det til at virke... Hvis det fucking virker kan du da godt få dine point..

Atox
Avatar billede atox Nybegynder
30. december 2001 - 16:49 #25
Jeg vil slukke og tænde, slukke og tænde 01010101
Avatar billede speedy Nybegynder
30. december 2001 - 18:59 #26
Du skrev i dit spørgsmål at du kunne sende et tal ud til porten...derfor regner jeg ikke med at det er et problem.

Derefter gav jeg dig et eksempel på en funktion, som du kunne bruge:

function BinToInt(bin: string): integer;
var
  i: integer;
begin
  result := 0;
  for i := length(bin) downto 1 do
    Inc(Result, round(power(2,(length(bin) - i))) * StrToInt(bin[i]));
end;


Du kan bruge den sådan:

dittal := BinToInt(\'10101010\');

Det vil sige at du bare skal sende dittal ud til porten, og så vil hver anden tænde og hver anden slukke.

Desuden har du jo slet ikke kommenteret undervejs i spørgsmålet...så er det jo ikke let at hjælpe.

/SpEeDy
Avatar billede speedy Nybegynder
30. december 2001 - 19:00 #27
og som sagt før, det er IKKE point\'ene det handler om...

/SpEeDy
Avatar billede atox Nybegynder
30. december 2001 - 21:42 #28
Ok så får du ikke point, men svarene var IKKe dem som jeg ledte efter...

Giv mig dog din e-mail og kig efter...
Avatar billede speedy Nybegynder
30. december 2001 - 21:44 #29
jeg er ikke med på hvad du vil sende, men du kan sende på speedy@espeedy.dk

/SpEeDy
Avatar billede nca Juniormester
31. december 2001 - 08:28 #30
Præcise spørgsmål giver præcise svar ;-)
01010101 = 85 (som er 55 i hex)
så hvis du sender tallet 85 (eller 55, hvis du arbejder i hex) ud på din port så får du tændt hver anden lampe.
Tallet 0 slukker alle.
Avatar billede atox Nybegynder
31. december 2001 - 10:08 #31
Det er rigtig nok... , men det er ikke det som jeg viljeg vil flashe med forud besemte dioder uden atlave loop med timer
Avatar billede speedy Nybegynder
31. december 2001 - 10:13 #32
Jeg er i gang med at lave et lille eksempel...
Jeg lægger det ud til download inden middag.

/SpEeDy
Avatar billede speedy Nybegynder
31. december 2001 - 12:26 #33
Du kan hente en demo her:
http://www.espeedy.dk/eksperten/

Den nederste fil hedder portdemo.zip og det er den du skal hente.

/SpEeDy
Avatar billede atox Nybegynder
31. december 2001 - 14:01 #34
Ok ... det var så ikke lige hvad jeg havde forstået ved dine svar... :-) men jeg vil gerne lave et nyt spm hvor du kan få dine point
Avatar billede sbay Nybegynder
11. januar 2002 - 01:38 #35
Speedy>>> Hvilken Delphiversion har du brugt???

Når jeg prøver at åbne projektet får jeg en fejl!:: Invalid Stream Format!

Hvad med typen TDLPortIO?

Er det en komponent du selv har lavet?
/Søren
Avatar billede speedy Nybegynder
11. januar 2002 - 09:07 #36
sbay>>Jeg bruger Delphi 6

TDLPortIO er en komponent samt dll som du kan hente her:

http://www.delphi32.com/vcl/2467/download,xid,2467.asp

Nej det er ikke mig der har lavet den ;)

/SpEeDy
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