AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi io.dll für parallelport, wie lese ich die bits?
Thema durchsuchen
Ansicht
Themen-Optionen

io.dll für parallelport, wie lese ich die bits?

Ein Thema von starkstrom · begonnen am 7. Feb 2008 · letzter Beitrag vom 8. Feb 2008
Antwort Antwort
starkstrom

Registriert seit: 18. Dez 2007
14 Beiträge
 
#1

io.dll für parallelport, wie lese ich die bits?

  Alt 7. Feb 2008, 22:53
Hallo zusammen,
ich habe ein Problem mit dem breitgetretenen Thema Parallelport undter Delphi...
Ich hab nach mehreren Möglichkeiten mich (vorerst) für die io.dll entschieden. andere wege führten meinst zu fehlern die ich nach stunden noch nicht gelöst hatte.
nunja, also wiegesagt, http://www.geekhideout.com/iodll.shtml klappt super, nur hab aber leider ich keinen schimmer wie ich die ack, rdy, error undsoweiter bits auslese.
ich hab auch irgendwie keine lösung gefunden.

PortOut($378, $01); ist ja toll, aber wär dann der Read sowas wie PortIn($378, ack);.. ? die haben doch sicher eine eigene adresse...

vllt weis ja einer von euch ein rat

danke im vorraus
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 7. Feb 2008, 23:01
Die Acknowledge-Leitung ist eigentlich für einen Interrupt-Handler da.

Das hier hast du ja vermutlich schon gesehen.

Gruss
Thorsten
  Mit Zitat antworten Zitat
starkstrom

Registriert seit: 18. Dez 2007
14 Beiträge
 
#3

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 7. Feb 2008, 23:23
Zitat von omata:
Die Acknowledge-Leitung ist eigentlich für einen Interrupt-Handler da.
ich mach das jetzt dank info LK seid gestern und ich hab keinen schimmer was der satz bedeutet
naja eigendlich weis ich nur nicht was dieser Interrupt-Handler ist. schnelles googeln ergab das er einen prozessor unterbricht.

ich wollte daten auf sehr einfach art zw 2 pcs austauschen. dabei soll es sich um einfache strings handeln, so ne billige art chat. das das sinnlos ist ist mir klar, ich will doch nur spielen

also daten über die datenleitungen rausgeben (soweit so gut) und dann ggf mit platine dawzischen, je nach volt etc (noch nicht wirklich informiert.. nur 5V, mehr weis ich net), an dem anderes pc empfangen. dafür hab ich nur 5 eingänge (ack, error, slct, pe und busy). diese hab ich für verschiedene zwecke vorgesehen und dachte ich könnte sie einfach so ansprechen und benutzten ohne das das irgendwen im system interessiert.

also sprich sowas wie if ((PortIn($378) = 1) then begin brabra.... den ganzen kodierungskäse und übertragungsbrabbel hab ich, mir fehlt nurnoch das senden und vorallem lesen auf den nicht-daten-leitungen...

und den post hab ich schon gelesen, aber ich mag vom prinzip io.dll mehr, vorausgesetzt es kann das was ich will
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 7. Feb 2008, 23:29
Warum muss es da unbedingt die Parallele Schnittstelle sein? Schau dir doch mal die Serielle an. hier

Gruss
Thorsten
  Mit Zitat antworten Zitat
starkstrom

Registriert seit: 18. Dez 2007
14 Beiträge
 
#5

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 8. Feb 2008, 00:05
das ist im moment unser thema in der schule... und als musterschüler *höhö* würd ich da gern schon über ganz viel labern können...
außerdem WILL ich das jetzt das es geht.. es muss doch irgendwie gehen..

ich hab mitlerweile bemerkt (das hat lange gedauert), dass function PortIn(Port : Word) : Byte; gar keine Pin angabe macht (im Gegensatz zu procedure PortOut(Port : Word; Data : Byte);. vllt ist der rückgabewert ja eine zusammensetzung aller möglichen kombinationen der 5 eingänge. da ein byte ja 2^8 ist und ich nur 2^5 möglichkeiten hab wenn ich mich da nicht gerade verrechne würde das sogar den bedarf locker decken. wäre umständlich aber egal. also 00001 für alles low außer error, 00010 alles low außer ack, 00011 alles low außer ack und error.. oder so was in der art halt. mehr fällt mir nicht ein. zurzeit hab ich noch keine platine oder schaltplan um das zu testen und so auf die schnelle will ich das nicht machen, nicht das nachher mir der controller oder sonst wer durchschmort ^^

//offtopic: könnte ich den daten-1 pin irgendwie mit einem der input pins verbinden das wenn ich D1 auf high setzte der jeweilige input auch high wird? bin kein e-technik-genie, aber das kommt mir zu einfach vor...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 8. Feb 2008, 09:18
Zitat von omata:
Die Acknowledge-Leitung ist eigentlich für einen Interrupt-Handler da.
Afair ist der ACK des Druckerports nicht mit dem Interrupt des selbigen verbunden. Das ACKnowledge Signal bestätigt eine Datenübertragung von Rechner zum Drucker. Ich denke du hast das zu eng auf die CPU I/O bezogen.

@starkstrom: Hast du dir schonmal die Portstruktur des Parallelports angeschaut?

Basisadresse + 0 ist das Datenregister,
Basisadresse + 1 ist das Statusregister,
Basisadresse + 2 ist das Kontrolregister

Somit solltest du dich kundig machen über die Definition der Bits und entsprechend umsetzen.
  Mit Zitat antworten Zitat
starkstrom

Registriert seit: 18. Dez 2007
14 Beiträge
 
#7

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 8. Feb 2008, 13:37
ah, danke, den link hatte ich zwar schonmal, aber nie genau angeschaut.
also kann ich zB mit PortOut($378+2, $04); init auf high setzten.
kann ich genau so auch auslesen ? also mit if (PortIn($378+1) = $08) nach ERROR fragen ? hab leider noch nichts zum testen was eine platine angeht.. mal googeln ob sich was einfaches findet.

Zitat:
Ich denke du hast das zu eng auf die CPU I/O bezogen.
was meinst du damit?

//EDIT
//zu dem schaltplan hab ich was gefunden.. mal sehen : ) http://board.gulli.com/thread/714730...ng-ansprechen/
  Mit Zitat antworten Zitat
starkstrom

Registriert seit: 18. Dez 2007
14 Beiträge
 
#8

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 8. Feb 2008, 14:32
ich habs.. man fragt die leitungen echt so ab. Button1.Caption := IntToStr(PortIn($378+1));
was ich nicht wusste ist das die activ-low-pins hardware invertiert sind, aber das ist auch nicht weiter schlimm.

danke an alle, aber ich habe noch eine kleine offtopic frage...

http://www.kristian-graul.de/lpt.jpg

diese schaltung geht, aber führt sie zwischen port 2(Data0-Out) und 15(Error-In) nicht zu sowas wie einem kurzschluss? sollte da eine LED oder ein widerstand dazwischen ?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: io.dll für parallelport, wie lese ich die bits?

  Alt 8. Feb 2008, 14:43
Zitat von starkstrom:
was ich nicht wusste ist das die activ-low-pins hardware invertiert sind, aber das ist auch nicht weiter schlimm.
Deshalb heissen sie ja gerade "low active" - also sie sind aktiv, wenn sie einen Low Pegel haben. Gekennzeichnet mit einem Strich über dem Bezeichner oder in Texform auch mit einem / vor dem Namen. Normalfall sind Leitungen halt "high active".

Und zu deiner Abfrage: Jede Datenleitung wird durch ein Bit in dem Register dargestellt. Somit musst du das Bit ausmaskieren, damit du nur noch das eine Bit abfragst. Ansonsten würde dir ja eine andere, zusätzlich gesetzte Leitung in die Suppe spucken.
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:31 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