AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"255" dauerhaft auf LPT1 !

Ein Thema von MrAndyG · begonnen am 8. Okt 2008 · letzter Beitrag vom 10. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
MrAndyG

Registriert seit: 8. Okt 2008
12 Beiträge
 
#1

"255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 20:29
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
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll'; und die PortIn-Funktion
function PortIn(Port:Word):Byte; stdcall; external 'io.dll';
Daraus habe ich folgendes kleines Programm gebastelt:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
PortOut($378, $4);
Edit2.Text:=IntToStr(PortIn($378));
end;
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...

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
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#2

Re: "255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 21:00
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.
  Mit Zitat antworten Zitat
MrAndyG

Registriert seit: 8. Okt 2008
12 Beiträge
 
#3

Re: "255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 21:04
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?
  Mit Zitat antworten Zitat
Roachford
(Gast)

n/a Beiträge
 
#4

Re: "255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 21:05
Zitat von MrAndyG:
Wisst ihr denn warum die LEDs dauerhaft leuchten und nicht auf meine Anweisung reagieren?
Die DLL bindet einen Treiber ein, der sich dann im Kernel zwischen der io.dll und dem Hardware Port vermittelt. Schonmal bei den Funktionen der io.dll geschaut bezüglich Initialisierung, Status und vielleicht Fehlercodes?
  Mit Zitat antworten Zitat
MrAndyG

Registriert seit: 8. Okt 2008
12 Beiträge
 
#5

Re: "255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 21:27
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.

NotPortBit($378, $2); Diese Anweisung schaltet die zweite LED ab.

Danke für deine Hilfe!!

Ich werde mich melden sobald mein Programm fertige Züge annimmt ^^



Gruß
Andy
  Mit Zitat antworten Zitat
Benutzerbild von christian.noeding
christian.noeding

Registriert seit: 26. Mai 2005
Ort: Knw.-Remsfeld
119 Beiträge
 
Delphi XE2 Professional
 
#6

Re: "255" dauerhaft auf LPT1 !

  Alt 8. Okt 2008, 21:38
Hallo


Kleiner Tipp, falls Interesse besteht:

PC_DIMMER - Professionelle Lichttechnik für Jedermann


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:

DMXControl
und
Freestyler



bis dann,
Christian
Christian Nöding
  Mit Zitat antworten Zitat
MrAndyG

Registriert seit: 8. Okt 2008
12 Beiträge
 
#7

Re: "255" dauerhaft auf LPT1 !

  Alt 10. Okt 2008, 17:27
Ich will mein Programm nun mit Tasten (KeyPress) steuern können. Dazu habe ich folgende Prozedur geschrieben:

Delphi-Quellcode:
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;
Also ich will mit den Tasten 1-8 verschiedene Prozeduren aufrufen. Nur leider kommt nachher gar nichts, wenn ich eine der Taste drücke...

Was habe ich da falsch gemacht?
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#8

Re: "255" dauerhaft auf LPT1 !

  Alt 10. Okt 2008, 17:33
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
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
LinuxFan

Registriert seit: 9. Jul 2007
Ort: Bensheim
20 Beiträge
 
RAD-Studio 2010 Arc
 
#9

Re: "255" dauerhaft auf LPT1 !

  Alt 10. Okt 2008, 17:40
Zitat von MrAndyG:
Ich will mein Programm nun mit Tasten (KeyPress) steuern können. Dazu habe ich folgende Prozedur geschrieben:

Delphi-Quellcode:
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;
Also ich will mit den Tasten 1-8 verschiedene Prozeduren aufrufen. Nur leider kommt nachher gar nichts, wenn ich eine der Taste drücke...

Was habe ich da falsch gemacht?
oder einfach

Delphi-Quellcode:
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;
und nicht vergessen:

Form1.KeyPreview := true;
Victor-Philipp Negoescu
ViaThinkSoft
http://www.viathinksoft.de
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: "255" dauerhaft auf LPT1 !

  Alt 10. Okt 2008, 17:40
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz