 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Volker Alexander
Anmeldungsdatum: 01.12.2009 Beiträge: 3
|
Verfasst am: 01.12.2009, 07:36 Titel: Parallel Port |
|
|
Hallo,
I bin neu, sozusagen brandneu bei FreeBASIC :) da ich es bislang noch nie benutzt habe.
Die wichtigste Frage für mich ist:
Kann ich mit FreeBASIC unter WinXP binäre Daten an bestimmte Parallel-Port-Pins senden und gleichzeitig von anderen Pins lesen?
Z.B.: Data Pins 0 bis 3 sollen output sein, um mit einem externen Gerät zu kommunizieren, 4 bis 7 sollen input sein, um feedback zu lesen. Und dann schreibt und liest man Einsen und Nullen mit FreeBASIC unter WinXP an den und vom Parallel-Port...
Vielen Dank im voraus,
Volker Alexander |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 01.12.2009, 09:59 Titel: Re: Parallel Port |
|
|
Volker Alexander hat Folgendes geschrieben: | Hallo,
I bin neu,
|
Bist Du Österreicher? Zitat: |
sozusagen brandneu bei FreeBASIC da ich es bislang noch nie benutzt habe.
|
Willkommen im Club!
Zitat: |
Die wichtigste Frage für mich ist:
Kann ich mit FreeBASIC unter WinXP binäre Daten an bestimmte Parallel-Port-Pins senden und gleichzeitig von anderen Pins lesen?
|
Gleichzeitig geht das schon mal gar nichts. Im Computer mußt Du alles schön der Reihe nach programmieren.
Zu Deiner Frage: WinXP erlaubt keinen direkten Zugriff auf Portleitungen. Dazu brauchst Du einen Treiber. Empfehlen würde ich hier "Userport.exe" oder "Inpout32.dll". Mit denen muß man natürlich umgehen können.
Irgendwo habe ich mal gelesen, daß bei FreeBasic beim Compilieren automatisch ein solcher Treiber hinzugefügt wird, aber man muß das Programm unter Admin-Rechten ausführen.
Genaueres hier: http://forum.qbasic.at/viewtopic.php?t=5104 _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Volker Alexander
Anmeldungsdatum: 01.12.2009 Beiträge: 3
|
Verfasst am: 01.12.2009, 23:18 Titel: |
|
|
Hallo,
erst mal vielen Dank an Elektronix.
Zitat: |
Gleichzeitig geht das schon mal gar nichts. Im Computer mußt Du alles schön der Reihe nach programmieren.
|
Das ist mir schon klar, ich habe das früher ja schon gemacht, hatte damals aber noch keinen PC.
Deine Antwort ist zwar sehr nett, aber leider auch ein bißchen vage und hilft mir nicht so recht weiter. Der Link weist auf den qb-Teil des Forums hin.
Bestimmt haben das schon sehr viele Leute vor mir gemacht. Ich suche etwas Konkretes zur Frage nach einem aufgeteilten Port. Ich würde gern den Port halbieren und einen Teil im output mode und den anderen im input mode betreiben. Möglichst (nahezu) zeitgleich, zumindest aber so, daß ich nicht dauernd die Datenrichtung mit open neu definieren muß.
Greetz,
Volker Alexander |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 03.12.2009, 19:23 Titel: |
|
|
ok, verstehe.
Folgendes: Das Datenregister hat die Basisadresse des Ports, das Statusregister (5 Bits Input) hat Basisadresse + 1, das Control-Register (4 Bits output) Basisadresse + 2. Die übrigen Bits, die da zum ganzen Byte fehlen, werden vom Computer für weitere Zwecke genutzt und sollten nicht vom User/Programmierer verändert werden.
Es versteht sich, daß Du kein Register geteilt als Input- und Output-Schnittstelle gleichzeitig nutzen kannst. Du kannst die Control- und Statusleitungen für Ein- und Ausgaben verwenden, dann haste halt verschiedene Adressen.
Es ist also nicht möglich, ein ganzes Register als Output und ein weiteres ganzes Register als Input zu nutzen. Entweder, Du nutzt das Statusregister mit nur einem Halbbyte als Input und baust davor einen Multiplexer, oder Du schaltest Die Datenleitungen um.
Die Datenleitungen lassen sich bidirektional verwenden, aber nur im ECP/EPP-Modus- der wird im BIOS eingestellt- und nur als ganzes Byte. Dann kommen aber noch andere Register an anderen Adressen hinzu, in denen die Leitungen auf Input oder Output umgestellt werden können.
Meiner Meinung nach ist das die sinnvollste Methode. Empfehlen würde ich, vor die Dateneingänge 3-State-Bustreiber zu setzen, die Du dann mit den Control-Leitungen steuern kannst.
Informiere Dich darüber gründlich, bevor Du was kaputt machst!
http://www.sebastianlueth.de/index.php?page=Vortraege/Druckerschnittstelle
http://www.dstrom.de/ds/a0001.htm (mit Programmbeispiel in C)
http://members.inode.at/anton.zechner/az/Parallel.htm (Mit Programmbeispielen in C)
http://www.coding-board.de/board/showthread.php?t=27509 (Über die IRQs des LPT)
Wie gesagt- Unter WinXP nur unter der Voraussetzung, daß Du den Treiber (Userport.exe oder inpout32.dll) installiert hast. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Volker Alexander
Anmeldungsdatum: 01.12.2009 Beiträge: 3
|
Verfasst am: 05.12.2009, 15:42 Titel: |
|
|
Hi Elektronix,
das war genau, was ich wissen wollte! Vielen und herzlichen Dank! Also, da es offensichtlich möglich ist, mithilfe von FreeBASIC einen input- und einen outpt-Multiplexer gleichzeitig zu betreiben, hast du mich mit deiner Antwort zum FreeBASIC-User gemacht :)))
Ich wünsche dir ein wunderschönes Wochenende,
Volker Alexander |
|
Nach oben |
|
 |
|
|
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.
|
|