22. november 2001 - 18:44Der 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 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
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.
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.
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.
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!
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..
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.
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.
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.