![]() |
"255" dauerhaft auf LPT1 !
Hallo zusammen,
ich möchte für nen Kumpel ein kleines Programm schreiben, das mithilfe des Parallelports letzten Endes eine Lichterorgel ansteuern soll. Zum Probieren habe ich mir ein kleines Board mit 8 LEDs via Parallelport angeschlossen. Da ich erfahren habe, dass man unter Windows XP nicht mehr direkt auf den Anschluss zugreifen kann, habe ich mir die "io.dll" in mein Projekt eingebunden, die mehrere Funktionen und Prozeduren bereitstellt, mit denen man doch auf den Parallelport zugreifen können soll, Hier mal ein Auszug: die PortOut-Procedure
Delphi-Quellcode:
und die PortIn-Funktion
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
Delphi-Quellcode:
function PortIn(Port:Word):Byte; stdcall; external 'io.dll';
Daraus habe ich folgendes kleines Programm gebastelt:
Delphi-Quellcode:
Leider bekomme ich im Edit2 immer den Wert "255" als anliegenden Wert zurück, was auch begründen würde, warum alle LEDs am Parallelport dauerhaft leuchten...
procedure TForm1.Button1Click(Sender: TObject);
begin PortOut($378, $4); Edit2.Text:=IntToStr(PortIn($378)); end; Könnte Ihr mir erklären bzw weiterhelfen?? PS: Warum wird eigentlich ein "$" vor der "4" übergeben (habe diese Syntax so übernommen)? Viele Grüße Andy |
Re: "255" dauerhaft auf LPT1 !
Der Druckerport ist ein reiner Ausgabeport. Wenn du den bidirektionalen Betrieb nutzen willst (um auch was einzulesen), dann musst du diesen in dem Control Register des Druckerports einschalten.
|
Re: "255" dauerhaft auf LPT1 !
Hi danke für deine Antwort.
Das wusste ich nicht. Eigentlich brauche ich den aber ja nur zum Ausgeben. Wisst ihr denn warum die LEDs dauerhaft leuchten und nicht auf meine Anweisung reagieren? |
Re: "255" dauerhaft auf LPT1 !
Zitat:
|
Re: "255" dauerhaft auf LPT1 !
Hi,
ich habe die Lösung gefunden! Ich habe mal deinen Rat befolgt und nach Funktionen gesucht. Hab dann die Funktion negieren gefunden und kann so die LEDs erstmal einzeln auf NOT, also 0 setzen.
Delphi-Quellcode:
Diese Anweisung schaltet die zweite LED ab.
NotPortBit($378, $2);
Danke für deine Hilfe!! Ich werde mich melden sobald mein Programm fertige Züge annimmt ^^ :wink: :-D Gruß Andy |
Re: "255" dauerhaft auf LPT1 !
Hallo :)
Kleiner Tipp, falls Interesse besteht: ![]() Dort habe ich von einfacher Druckerport-Lichtsteuerung (DiscoLiteZ) über RS232-Dimmerpacks bishin zu DMX512-Geräten alles mit Plänen und Software abgedeckt. Das ganze wird vom PC_DIMMER2008, einer mittlerweile mächtigen Delphi7-Anwendung (zudem Opensource), gesteuert. Alternativ gibts dann zum Steuern noch die Seiten: ![]() und ![]() bis dann, Christian :) |
Re: "255" dauerhaft auf LPT1 !
Ich will mein Programm nun mit Tasten (KeyPress) steuern können. Dazu habe ich folgende Prozedur geschrieben:
Delphi-Quellcode:
Also ich will mit den Tasten 1-8 verschiedene Prozeduren aufrufen. Nur leider kommt nachher gar nichts, wenn ich eine der Taste drücke...
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin case Key of #48: begin ShineNot(0); SNot(0) end; #49: begin ShineNot(1); SNot(1) end; #50: begin ShineNot(2); SNot(2) end; #51: begin ShineNot(3); SNot(3) end; #52: begin ShineNot(4); SNot(4) end; #53: begin ShineNot(5); SNot(5) end; #54: begin ShineNot(6); SNot(6) end; #55: begin ShineNot(7); SNot(7) end; end; end; Was habe ich da falsch gemacht? |
Re: "255" dauerhaft auf LPT1 !
Die Key Codes sind anders. Das sind keine Acssii Zeichen, anhand folgender Tabelle siehst du was du da einsetzten musst.
VK_NULL $00 NULL VK_LBUTTON $01 Linke Maustaste VK_RBUTTON $02 Rechte Maustaste VK_CANCEL $03 Für die Verarbeitung von Control-Break VK_MBUTTON $04 Mittlere Maustaste (Dreitastenmaus) -- $05 Nicht definiert -- $06 Nicht definiert -- $07 Nicht definiert VK_BACK $08 BACKSPACE Taste VK_TAB $09 TAB Taste -- $0A Nicht definiert -- $0B Nicht definiert VK_CLEAR $0C Löschtaste VK_RETURN $0D RETURN Taste -- $0E Nicht definiert -- $0F Nicht definiert VK_SHIFT $10 SHIFT Taste VK_CONTROL $11 STRG Taste VK_MENU $12 ALT Taste VK_PAUSE $13 PAUSE Taste VK_CAPITAL $14 CAPS LOCK Taste -- $15 Reserviert für Kanji-Systeme -- $16 Reserviert für Kanji-Systeme -- $17 Reserviert für Kanji-Systeme -- $18 Reserviert für Kanji-Systeme -- $19 Reserviert für Kanji-Systeme -- $1A Nicht definiert VK_ESCAPE $1B ESC Taste -- $1C Reserviert für Kanji-Systeme -- $1D Reserviert für Kanji-Systeme -- $1E Reserviert für Kanji-Systeme -- $1F Reserviert für Kanji-Systeme VK_SPACE $20 LEERTASTE VK_PRIOR $21 PAGE UP Taste VK_NEXT $22 PAGE DOWN Taste VK_END $23 ENDE Taste VK_HOME $24 POS1 Taste VK_LEFT $25 Cursortaste links VK_UP $26 Cursortaste oben VK_RIGHT $27 Cursortaste rechts VK_DOWN $28 Cursortaste unten VK_SELECT $29 SELECT Taste VK_PRINT $2A Druck VK_EXECUTE $2B Taste Ausführen (EXECUTE) VK_SNAPSHOT $2C PRINT SCREEN Taste für Windows 3.0 und höher VK_INSERT $2D EINFG Taste VK_DELETE $2E ENTF Taste VK_HELP $2F Hilfetaste VK_0 $30 Taste 0 VK_1 $31 Taste 1 VK_2 $32 Taste 2 VK_3 $33 Taste 3 VK_4 $34 Taste 4 VK_5 $35 Taste 5 VK_6 $36 Taste 6 VK_7 $37 Taste 7 VK_8 $38 Taste 8 VK_9 $39 Taste 9 -- $3A Nicht definiert -- $3B Nicht definiert -- $3C Nicht definiert -- $3D Nicht definiert -- $3E Nicht definiert -- $3F Nicht definiert -- $40 Nicht definiert VK_A $41 Taste A VK_B $42 Taste B VK_C $43 Taste C VK_D $44 Taste D VK_E $45 Taste E VK_F $46 Taste F VK_G $47 Taste G VK_H $48 Taste H VK_I $49 Taste I VK_J $4A Taste J VK_K $4B Taste K VK_L $4C Taste L VK_M $4D Taste M VK_N $4E Taste N VK_O $4F Taste O VK_P $50 Taste P VK_Q $51 Taste Q VK_R $52 Taste R VK_S $53 Taste S VK_T $54 Taste T VK_U $55 Taste U VK_V $56 Taste V VK_W $57 Taste W VK_X $58 Taste X VK_Y $59 Taste Y VK_Z $5A Taste Z VK_LWIN $5B Linke Windowstaste VK_RWIN $5C Rechte Windowstaste VK_APPS $5D Application-Taste -- $5E Nicht definiert -- $5F Nicht definiert VK_NUMPAD0 $60 Numerisches Tastenfeld, Taste 0 VK_NUMPAD1 $61 Numerisches Tastenfeld, Taste 1 VK_NUMPAD2 $62 Numerisches Tastenfeld, Taste 2 VK_NUMPAD3 $63 Numerisches Tastenfeld, Taste 3 VK_NUMPAD4 $64 Numerisches Tastenfeld, Taste 4 VK_NUMPAD5 $65 Numerisches Tastenfeld, Taste 5 VK_NUMPAD6 $66 Numerisches Tastenfeld, Taste 6 VK_NUMPAD7 $67 Numerisches Tastenfeld, Taste 7 VK_NUMPAD8 $68 Numerisches Tastenfeld, Taste 8 VK_NUMPAD9 $69 Numerisches Tastenfeld, Taste 9 VK_MULTIPLY $6A Multiplikationstaste VK_ADD $6B Additionstaste VK_SEPARATOR $6C Trenntaste VK_SUBTRACT $6D Subtraktionstaste VK_DECIMAL $6E Dezimaltrenntaste VK_DIVIDE $6F Divisionstaste VK_F1 $70 F1 Taste VK_F2 $71 F2 Taste VK_F3 $72 F3 Taste VK_F4 $73 F4 Taste VK_F5 $74 F5 Taste VK_F6 $75 F6 Taste VK_F7 $76 F7 Taste VK_F8 $77 F8 Taste VK_F9 $78 F9 Taste VK_F10 $79 F10 Taste VK_F11 $7A F11 Taste VK_F12 $7B F12 Taste VK_F13 $7C F13 Taste VK_F14 $7D F14 Taste VK_F15 $7E F15 Taste VK_F16 $7F F16 Taste VK_F17 $80 F17 Taste VK_F18 $81 F18 Taste VK_F19 $82 F19 Taste VK_F20 $83 F20 Taste VK_F21 $84 F21 Taste VK_F22 $85 F22 Taste VK_F23 $86 F23 Taste VK_F24 $87 F24 Taste -- $88 Nicht belegt -- $89 Nicht belegt -- $8A Nicht belegt -- $8B Nicht belegt -- $8C Nicht belegt -- $8D Nicht belegt -- $8E Nicht belegt -- $8F Nicht belegt VK_NUMLOCK $90 NUM LOCK Taste VK_SCROLL $91 SCROLL LOCK Taste VK_LSHIFT $A0 Linke Shift-Taste VK_RSHIFT $A1 Rechte Shift-Taste VK_LCONTROL $A2 Linke Strg-Taste VK_RCONTORL $A3 Rechte Strg-Taste VK_LMENU $A4 Linke Menü-Taste VK_RMENU $A5 Rechte Menü-Taste VK_SEMICOLON $BA Taste ; VK_EQUAL $BB Taste = VK_COMMA $BC Taste , VK_MINUS $BD Taste - VK_PERIOD $BE Taste . VK_SLASH $BF Taste \ VK_BACKQUOTE $C0 Taste ` VK_LEFTBRACKET $DB Taste < VK_BACKSHLASH $DC Taste \ VK_RIGHTBRACKET $DD Taste > VK_QUOTE $DE Taste ´ VK_?? $E2 Taste < VK_PROCESSKEY $E5 Process-Taste VK_ATTN $F6 Attn-Taste VK_CRSEL $F7 Clear-Selected-Taste VK_EXSEL $F8 EXSEL-Taste VK_EREOF $F9 EREOF-Taste VK_PLAY $FA Play-Taste VK_ZOOM $FB Zoom-Taste VK_NONAME $FC Noname-Taste VK_PA1 $FD PA1-Taste VK_OEM_CLEAR $FE OEM-Clear |
Re: "255" dauerhaft auf LPT1 !
Zitat:
Delphi-Quellcode:
und nicht vergessen:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin case Key of '1': begin ShineNot(0); SNot(0) end; '2': begin ShineNot(1); SNot(1) end; '3': begin ShineNot(2); SNot(2) end; '4': begin ShineNot(3); SNot(3) end; '5': begin ShineNot(4); SNot(4) end; '6': begin ShineNot(5); SNot(5) end; '7': begin ShineNot(6); SNot(6) end; '8': begin ShineNot(7); SNot(7) end; end; end;
Delphi-Quellcode:
Form1.KeyPreview := true;
|
Re: "255" dauerhaft auf LPT1 !
Im OnKeyPress ist Key ein Char, also 1 Byte groß. Im OnKeyDown ist es ein Word, also 2 Byte groß. So, Larsi, jetzt überleg mal, was hier richtig wäre.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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-2025 by Thomas Breitkreuz