![]() |
Re: Lauflicht mit 8LED's
Zitat:
In dem Du out32(888,0) machst? |
Re: Lauflicht mit 8LED's
Neee eben nicht :( wenn ich das mache dann werden ALLE LEDs ausgeschaltet..aber wie erreiche ich dass nur EINE bestimmte LED ausgeht ?
THX Schonmal |
Re: Lauflicht mit 8LED's
Delphi-Quellcode:
oder war das so: ? :gruebel:
// zB. PinNummer = 64
Out32(888, PinNummer and 1); // für das einschalten //bzw. Out32(888, PinNummer and 255); // für das ausschalten
Delphi-Quellcode:
[Edit=turboPASCAL] :P Das ist grosser Quark was hier steht ! :mrgreen: [/Edit]
// zB. PinNummer = 64
Out32(888, PinNummer {and 0}); // für das einschalten //bzw. Out32(888, PinNummer and 254); // für das ausschalten |
Re: Lauflicht mit 8LED's
also ich mache das so:
Delphi-Quellcode:
(Der Source ist ungetestet aus'm Kopf aufgeschrieben....:wink:)
procedure leuchten(led1,led2,led3,led4,led5,led6,led7,led8:boolean);
var x:integer; begin x:=0; // soll LED 1 leuchten ? if led1 = true then x:= x +1; // soll LED 2 leuchten ? if led2 = true then x:=x+2; // soll LED 3 leuchten ? if led3 = true then x:= x +4; {...} Out32(888,x); end; hibbert |
Re: Lauflicht mit 8LED's
Liste der Anhänge anzeigen (Anzahl: 3)
Nach dem Vorschlag von hibbert so: :wink:
Delphi-Quellcode:
Es geht aber doch viel einfacher:
const
LPT_Port = $378; // LPT Port 1 (dezimal 888) procedure LEDs(led1,led2,led3,led4,led5,led6,led7,led8: Boolean); var Value: Byte; begin Value := 0; if led1 then Value := Value + 1; if led2 then Value := Value + 2; if led3 then Value := Value + 4; if led4 then Value := Value + 8; if led5 then Value := Value + 16; if led6 then Value := Value + 32; if led7 then Value := Value + 64; if led8 then Value := Value + 128; Out32(LPT_Port, Value); end; // Aufruf zB so: LEDs(True, False, False, False, False, False, False, False);
Delphi-Quellcode:
oder einfach so:
const
LPT_Port = $378; // LPT Port 1 (dezimal 888) procedure SetLEDs(Value: Byte); begin Out32(LPT_Port, Value); end; // Aufruf: SetLEDs($00000001); // Setzt die LED 1 SetLEDs($00000011); // Setzt die LED 1 & 2 SetLEDs($10000001); // Setzt die LED 1 & 8 SetLEDs($00000000); // alles aus
Delphi-Quellcode:
Out32($378, $00000001); // Setzt die LED 1
... Out32($378, $10000001); // Setzt die LED 1 & 8 Bitte mal Testen... |
Re: Lauflicht mit 8LED's
Hai,
da es Sonntagmorgen ist und ich gerade Lust hatte hier noch mein Lösungsansatz:
Delphi-Quellcode:
Dabei werden die LEDs von rechts nach links gezählt (0 bis 7).
const
LPT_Port = $378; var LEDStatus: byte; procedure PruefeLED (aNumber : Byte); begin if (aNumber > 7) then begin raise exception.create('LED Nummer ist größer als das Maximum'); end; end; procedure SetzePort; begin Out32(LPT_Port, LEDStatus); end; procedure LEDEin(aNumber: byte); begin PruefeLED(aNumber); LEDStatus := LEDStatus or (1 shl (aNumber)); SetzePort; end; procedure LEDAus(aNumber: byte); begin PruefeLED(aNumber); LEDStatus := LEDStatus and (not (1 shl aNumber)); SetzePort; end; procedure InvertLED(aNumber : byte); begin PruefeLED(aNumber); LEDStatus := LEDSTatus xor (1 shl aNumber); SetzePort; end; procedure AlleLEDEin(aStatus: boolean = True); begin if (aStatus) then begin LEDStatus := $FF end else begin LEDStatus := $0 end; SetzePort; end; procedure SchiebeLEDLinks; begin LEDStatus := LEDSTatus SHL 1; SetzePort; end; procedure SchiebeLEDRechts; begin LEDStatus := LEDSTatus SHR 1; SetzePort; end; Aufrufen dann so:
Delphi-Quellcode:
procedure TForm1.btn_SetLEDClick(Sender: TObject);
begin LEDEin(0); LEDEin(5); LEDEin(7); end; procedure TForm1.btn_LEDAusClick(Sender: TObject); begin LEDAus(0); LEDAus(5); LEDAus(7); end; procedure TForm1.btn_InvertClick(Sender: TObject); begin InvertLED (5); end; procedure TForm1.btn_SchiebenClick(Sender: TObject); begin SchiebeLEDLinks; end; procedure TForm1.btn_rechtsClick(Sender: TObject); begin SchiebeLEDRechts; end; |
Re: Lauflicht mit 8LED's
wie kann ich die funktionen aus der dll angucken ??
|
Re: Lauflicht mit 8LED's
Wenn ich bei mir den Code von TurboPASCAL compilieren will, bleibt er stehn und zeigt den Code des Projects an und compiliert es nicht! :wall:
Genau das gleiche passiert, wenn ich das in ein eigenes Programm schreibe! :wall: :wall: *nixkapier* Was mache ich denn falsch? zebrafalke |
Re: Lauflicht mit 8LED's
Zitat:
Welche Delphiversion und welche Windowsversion hast du ? |
Re: Lauflicht mit 8LED's
Liste der Anhänge anzeigen (Anzahl: 1)
Ich benutze Delphi 2005 und WinXP
Er zeigt den Quelltext von "Project1" an und markiert das "begin" rot und sagt: "E2156 Ausdruck zu komplex" Was sagt mir das? :gruebel: :coder2: Im Anhang ein Screenshot davon. zebrafalke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz