Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Parallelen Port abfragen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Reaper14



Anmeldungsdatum: 17.11.2009
Beiträge: 4

BeitragVerfasst am: 17.11.2009, 21:49    Titel: Parallelen Port abfragen Antworten mit Zitat

Hallo,
ich hab letzten Woche mit Free Basic begonnen und hab mich jetzt auch schon durch die Tutorials gearbeitet und mit Hilfe der Befehlsreferenz heraus gefunden das ich mit out port,pid den Druckerport bedienen kann. Aber wie ist es möglich die herauszufinden ob Spannung an einer Datenleitung anliegt? Ich meine gibt es dafür auch einen Befehl und falls ja könnte mir einer ein kurzes Beispiel machen weil ich finde die Befehlsreferenz ziemlich trocken. Wie muss ich das dann eigentlich machen, einfach den Pluspol(oder minus weil ja in der Physik die Stromrichtung anders ist) mit dem entsprechendem Pid verbinden(natürlich mit einem 1k Wiederstand dazwischen das es kein Kurzschluss gibt.)
Ich hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen Reaper14
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 17.11.2009, 23:20    Titel: Antworten mit Zitat

Was meinst Du mit "ob Spannung anliegt"- Willst Du Ausgangsspannungen oder Eingangsspannungen abgreifen? Für Ausgangsspannungen reicht eine simple LED-Schaltung mit Treibertransistoren. Und messen kann man das auch einfach so.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Reaper14



Anmeldungsdatum: 17.11.2009
Beiträge: 4

BeitragVerfasst am: 17.11.2009, 23:42    Titel: Antworten mit Zitat

Also ich möchte eine Schaltung bauen, in der sehen kann ob ein Schalter gedrückt wurde oder nicht. Ich würde dafür den Pluspol von einer Batterie mit einem Schalter verbinden das dann mit einen Wiederstand und das dann mit dem Parallelen port:
Code:

V5-------Schalter-------Wiederstand-----Paralleler Port.


Und wenn ich dann den Schalter drücke musste ja an dem Port 5V (oder weniger wegen dem Wiederstand) ankommen und wie kann ich das erkennen? Oder hab ich da irgendeinen Grundlegenden Fehler drin?

Edit:
Oder was vielleicht sogar besser wäre ist es möglich zu überprüfen ob eine Datenleitung mit einer Masse verbinden ist? Also ob z.b. pin2 (Datenleitung) mit pin 25 (Masse) verbunden ist? So wurde sich das ganze mit dem Schalter einfacher machen lasen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 18.11.2009, 10:16    Titel: Antworten mit Zitat

Kleiner Tip: Ein bißchen Komma-Setzung würde Deine Postings deutlich verständlicher machen.

Du willst also Daten von über eine Portleitung einlesen. Dazu brauchst Du den Widerstand zwischen Schalter und Widerstand nicht, solange Du die üblichen 5V nicht überschreitest. Du brauchst nur einen Pull-Down-Widerstand nach Masse für den Fall, daß der schalter offen ist, damit Du einen definierten LO-Pegel hast.

Dann mußt Du die Basis-Adresse des Ports - meistens 378h oder so - und des entprechenden Registers ermitteln (der LPT-Port hat 3 Register, die direkt hintereinander liegen: Datenleitungen = Basisasdresse, Statusleitungen = Basis +1, Steuerleitungen = Basis +2) und sicherstellen, daß Du nicht die Steuerleitungen (Ausgangsleitungen) mit einem Eingangspegel belegst.

Du kannst natürlich auch die Datenleitungen direkt abfragen, dazu muß der Port aber im BIOS auf EEP oder ECP eingestellt sein.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.


Zuletzt bearbeitet von Elektronix am 18.11.2009, 21:02, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 18.11.2009, 16:02    Titel: Antworten mit Zitat

Elektronix hat Folgendes geschrieben:
Kleiner Tip: Ein bißchen Komma-Setzung würde Deine Postings deutlich verständlicher machen.

Zitat:
bauen, in der

grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Reaper14



Anmeldungsdatum: 17.11.2009
Beiträge: 4

BeitragVerfasst am: 19.11.2009, 16:31    Titel: Antworten mit Zitat

Also ich hab im Bios von "Normal" auf ECP umgestellt. Es gab aber auch noch EEP und bidirektional. Aber wie frag ich das jetzt mit Basic ab, also ob da ein High oder low Pegel anliegt?.
Wenn ich jetzt so eine Schaltung habe:
Code:
Datenleitung7(pin9)---Schalter----Pulldown Wiederstand---Masse
.Wie kann ich das jetzt abfragen? Oder muss ich die Statusleitungen benutzen also z.b.
Code:
Statusleitung(pin10)---Schalter----Pulldown Wiederstand---Masse

Ich hab gelesen das ich diese Signale mit INP erkennen kann, aber bei INP steht in der Befehlsreferenz nur drin das man da die Portnummer in Klammer angibt. Also bei den Dateinleitungen 888 und bei den Statusleitungen 889. Aber wie kann ich sagen ,dass er das von einem bestimmten pin lesen soll?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 19.11.2009, 17:15    Titel: Antworten mit Zitat

Ich reich dir schon dein Fläschen /sarcasm

http://franksteinberg.de/progss.htm#BitsundBytes


Zuletzt bearbeitet von 28398 am 22.11.2009, 01:27, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 20.11.2009, 13:36    Titel: Antworten mit Zitat

Reaper14 hat Folgendes geschrieben:
Also ich hab im Bios von "Normal" auf ECP umgestellt. Es gab aber auch noch EEP und bidirektional. Aber wie frag ich das jetzt mit Basic ab, also ob da ein High oder low Pegel anliegt?.
Wenn ich jetzt so eine Schaltung habe:
Code:
Datenleitung7(pin9)---Schalter----Pulldown Wiederstand---Masse
.Wie kann ich das jetzt abfragen? Oder muss ich die Statusleitungen benutzen also z.b.
Code:
Statusleitung(pin10)---Schalter----Pulldown Wiederstand---Masse

Ich hab gelesen das ich diese Signale mit INP erkennen kann, aber bei INP steht in der Befehlsreferenz nur drin das man da die Portnummer in Klammer angibt. Also bei den Dateinleitungen 888 und bei den Statusleitungen 889. Aber wie kann ich sagen ,dass er das von einem bestimmten pin lesen soll?


Wenn Du ein Register abfragst, liefert Dir der Rechner ein ganzes Byte. Was da drin steht, hängt vom Alter Deines Rechners ab und von der Beschaltung ab (ältere Rechner haben noch reine TTL-Bausteine, da sind offene Leitungen einfach HI, neuere Rechner mit CMOS-Bausteinen wollen alle Leitungen beschaltet haben).
Wenn Du ein bestimmtes Bit abfragen willst, hilft es einfach, eine MAske darüber zu legen, also per AND (für 1) oder OR (für 0) ein Bit zu maskieren. Anderenfalls sollte sich der Wert auch aus der Dez-Zahl ergeben, den Dir die Abfrage liefert.
Denk daran, daß vom Status-Register nur 4 Leitungen genutzt werden, vom Steuer-Register nur 5.

Schau Dir nochmal die Addressierung an, soweit ich weiß, liegt das Status-Register bei 890dez.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Reaper14



Anmeldungsdatum: 17.11.2009
Beiträge: 4

BeitragVerfasst am: 21.11.2009, 23:53    Titel: Antworten mit Zitat

Ok ich denke das ich es jetzt so einigermaßen verstanden hab. Ich hab jetzt mal das Statusregister ausgelesen.
Code:
print inp(&h379)
sleep

Die Ausgabe war 127 also Binar 01111111. Daraus schlisse ich das alle Pins bis auf eins auf High Pegel sind. Dieses eine Pin wird der Pin 11 sein weil der negiert ist also False zurückliefert wenn ein High Pegel anliegt.
Könnte ich jetzt z.b. eine Verbindung von einem Datenpin zu einem Statusregisterpin machen und mit einem Wiederstand die Spannung so weit runterziehen das am Statusregisterpin nur noch ein Lowpegel anliegt?
Mit freundlichen Grüßen Reaper
PS: An meinem Port war nichts anschlossen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 22.11.2009, 11:24    Titel: Antworten mit Zitat

Nicht mit einem Widerstand, sondern direkt an Masse legen.

Aber mach Dich mit den Spezifikationen vertraut. Die 3 übrigen Bits, die nicht für den Drucker-Status gebraucht werden, haben im ECP/EEP-Modus auch ihre Bedeutung.

http://members.inode.at/anton.zechner/az/Parallel.htm
siehe Bit 4 und 5 im 3. Register.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz