PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LPT Port unter QBasic



Michael 123
24.06.2005, 17:08
Hi

ich versuche schon seit einigen Stunden den Druckerport über QBasic anzusteuern. Ich habe mir ein LED-Karte gebaut und möcht diese nun ansteuern. Sobald ich den Stecker in den LPT 1 Port stecke leuchten alle LED's und ich kann sie nicht ansteuern in QBasic.
Das Programm sieht so aus:

CLS ................... 'Löscht den Bildschirm
For I = 1 TO 7.......'Schleife für den Ausgang
OUT 378, I^2........' " (378 Ist mein LPT Port)
NEXT....................'Ende der Schleife
END......................'Beendet das Programm

Beim LPT1 Anschluss verwende ich folgende Anschlüsse: Als Ausgang: 2,3,4,5,6,7,8,9 und als Masse: 19

für schnelle Hilfe Dankbar

PS:Nicht wundern über die Punkte zwischen den Befehlen und den Komentaren ging nicht anders!

jörn
24.06.2005, 17:13
378 ist die hexadezimale Adresse des Parallelports. Mit dezimalen 888 klappt es sehr gut bei mir. Außerdem sollte die Schleife zu schnell sein, als dass Du es wirklich blinken sehen könntest.

Gruß,

jörn

uwegw
24.06.2005, 17:32
PS:Nicht wundern über die Punkte zwischen den Befehlen und den Komentaren ging nicht anders!

für sowas gibts hier im forum die option, den text als programmcode zu markieren, dann passt die darstellung. dazu klickst du bei der eingange auf den button "code", kopierst den text rein und dann ochmal auf den button.
dann wird der programmtext von [.code] und [./code] (die punkte wegdenken!) eingerahmt, und später siehts dann so aus:

aus [.code] programmtext
eingerückter text
noch weiter eingerückt [./code]
(man merkt, dass die lerzeichen am zeilenanfang automatisch entfernt werden)

wird
programmtext
eingerückter text
noch weiter eingerückt


das ganze lässt sich auch nutzen um schnell mal nen schaltplan zu machen:





VCC
+
|
V ->
-
|
|
.-.
| |
| |
'-'
|
|
| o
|=|>
| o
|
|
===
GND

Skilltronic
24.06.2005, 19:52
Hallo

Wie schon gesagt wurde, ist 378 die hexadezimale Schreibweise der Dezimalzahl 888. Du kannst in QBasic beides verwenden, musst aber bei den Hex-Zahlen &H davorsetzen. Also z.B. OUT &H378, x oder eben OUT 888, x

Dann solltest du noch 2^I schreiben statt I^2 um die Leitungen nacheinander einzeln einzuschalten. Die 8 Kanäle liegen ja auf den 8 Bit des Registers und haben damit folglich den Stellenwert der entsprechenden Zweierpotenzen.

Unter WinNT/XP lässt sich die parallele Schnittstelle nicht mehr so ohne Weiteres von einem DOS-Programm wie BASIC ansprechen. Da brauchst du wahrscheinlich noch ein entsprechendes Tool. Geht aber alles.

Gruss
Skilltronic

Michael 123
25.06.2005, 16:42
Hi

danke für die schnellen Antworten. Aber nun folgendes Problem: Ich haben das Programm nun so Programiert (unter Dos):


CLS
FOR I = 1 TO 7
OUT 888, 2 ^ I
PRINT I
SLEEP 5
NEXT
END

aber der schaltet nur ausgang 1 ein und beim nächsten wieder aus!
die anderen bleiben an und leuchtn!

mfg

Michael

art-hightech
26.06.2005, 01:11
ich würd für I bei 0 anfangen...
was auch schön ist: einfach zufallszahlen von 0-255 auf den Port mit kleiner zeitverzögerung legen! ;)
889 ist übrigends dein input-port und 890 dein command-port, wenn ich mich nicht irre!
mfg

lefaje
26.06.2005, 02:09
Hallo Michael,
bin durch Zufall auf deinen Beitrag gestossen. Programmiere auch gerne Steurungen über LPT oder RS232. Als Alternative zu QBasic kann ich dir PureBasic empfehlen (fairer Preis). Läuft unter Windows und Linux, mit DLL`s Zugriff auf alle Ports, auch unter XP. Kleine Umstellung im Programmierstil ist notwendig, aber einfach zu erlernen. Steuere z.B. mit etwas Hardware 32 Eingänge und 32 Ausgänge über LPT per Mausklick.
Demo-Download:
www.purebasic.com
MfG LeFaJe

Schlebinski
26.06.2005, 04:52
mhh keine ahnung aber schreib mal next i

Michael 123
26.06.2005, 19:35
Hi

habe das Problem gelöst wollte den LPT Port unter XP ansteuern :-( habe dan im I-net gesucht und eine Free dos Version gefunden mit der auch in Dos QBASIC progen kann und es hat geklappt :-)

MFG MICHAEL