| Autor |
Beitrag |
oldmax
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Di 09.05.06 12:58
Hi
Mal wieder ein altes Thema
Ich benötige Zugriff auf den LPT- Port, und zwar wenn möglich über die API. Oft hab ich gelesen, ganz einfach, aber wenn’s dann um wirkliche Info’s geht, wie’s funktioniert, bzw. wie’s programmiert wird, war Sendepause. Hat jemand schon mal so was geschrieben, oder kann nachvollziehbar diese Programmierung erklären. Ach bitte, nicht wieder ein Verweis auf ZLIOPort oder ähnliches. Da bleib ich lieber bei Win95 /Win98 und greif direkt über In- Out- Befehle in Assemblercode zu.
Hintergrund:
Ich möchte mit dem Parallelport eine Steuerung realisieren. (Haus/ Hof /Garten/ Modellbahn etc.) Eigentlich kein Problem, da alte Rechner zur Verfügung stehen und diese sich durch direkte In / Out ansprechen lassen.
Aber einerseits stirbt auch der letzte alte PC irgendwann einmal und zweitens würd ich auch gern mal etwas weitergeben. Und da soll‘s dann ja auch funktionieren. Wer kann mir da helfen ?
Ach ja, im Gegenzug kann ich bei Interesse ja einen Thread öffnen, der den Bau einer Hardware sowie die Programmierung erklärt....
Natürlich gibt’s dann auch ein bißchen Code dazu.
Martin
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 09.05.06 13:49
Moin und  im Forum!
Martin Vogel hat folgendes geschrieben: | | Aber einerseits stirbt auch der letzte alte PC irgendwann einmal und zweitens würd ich auch gern mal etwas weitergeben. |
Geh einfach gleich zwei Schritte weiter und nimm eine Netzwerkanbindung.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Bunbury
      
Beiträge: 115
|
Verfasst: Di 09.05.06 14:13
.
Endlich mal einer, der das auch so sieht. Wozu Fremd-DLLs nutzen oder erst diskrete Treiber installieren, wenn Windows alles auch noch versionskompatibel mitliefert!
Über den Parallelport habe ich sowas über Api noch nicht gemacht - einfach weil die Schnittstelle nicht so günstig und bei vielen neueren PCs ganicht mehr vorhanden ist. Wegen der 5V-Pegel ist die Leitungslänge arg begrenzt und man braucht immer mehradrige Leitungen.
Sowas ist aber genauso einfach über RS232 zu erledigen - das wäre dann nicht 2, sondern immerhin einen Schritt weiter.
Man kann problemlos 50m Kabel anschließen, braucht nur 2 oder 3 Adern und hat keine Probleme Werte auch rückwärtig am PC zu empfangen. Ich habe sowas über API schon gemacht und das funktioniert auch bei funkelnagelneuen Laptops über USB -> RS232 Adapterkabel noch ganz hervorragend. (wobei man dann schon den Adapter-Treiber installieren muß - nur am Programm selbst ändert sich dank API nichts solange irgendein COM-Port verfügbar ist)
Ich habe mir hier in anderen Threads schon den Mund fusselig geredet (kannst ja mal das Board durchsuchen) - Du bist immerhin schonmal auf einem vernünftigen Pfad was API und Kompatibilität angeht. Das einzige, wovor viele Angst haben ist der seriell -> parallel Wandler um Relais o.ä. ein- und ausschalten zu können.
Das ist aber wirklich kein Thema und ein entsprechndes IC gibts für 3 Eur. Da hätte man nicht nur 20 Ausgangspins mit 5V/40mA zur Verfügung die man einfach über senden einer Zahl schalten kann, sondern könnte auch analoge Spannungswerte einlesen - wenn man denn will.
Wäre das was für Dich?
Beispielcode für API-Ansteuerung der seriellen Ports habe ich natürlich reichlich.
MfG
Bunbury
.
|
|
oldmax 
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mi 10.05.06 07:47
Hi
@Narses
Wenn du mit deinem Beitrag meinst:“benutz einen alten Rechner mit Win9x und bastel da alles rein, greif über Assembler zu und hol die Daten übers Netzwerk“ dann ist dies sicherlich eine Möglichkeit. Ansonsten war die Info nich sehr hilfreich.
@Bunbury
Danke für deinen Beitrag. Laß mich erklären, warum mir der Zugriff auf LPT über die WinApi so wichtig ist.
Der Port ist einfach zu händeln und es ist ohne großen Aufwand ein schneller Portzugriff mit 32 Ein- und 32 Ausgängen möglich. Sollte es mehr sein, Anschluß von Microcontrolern oder Ein- oder Ausgabe von Analogwerten macht der „Aufwand“ für die „Kleine Datei“ zum Zugriff über den seriellen Port sicherlich Sinn. Der Vorteil des schnellen Zugriffes schmilzt allerdings etwas und Versuche mit USB (Bausatz von Conrad für ca. 30 € ) haben ergeben, das die Schnittstelle doch ganz schön langsam ist. Außerdem waren mir auch 5 Eingänge zu wenig. (5 digital Ein, 8 digital Aus und 2 analog Ein und 2 Analog Aus)
Dem ein oder anderen mag es reichen.
Wenn du Informationen über Schaltpläne und Bauteile zum Bau von seriellen Ein- Ausgabegeräten geben kannst, das würde mir helfen und vielleicht trenne ich mich dann ja von der LPT.
(ein alter Spruch: Löse dich von einem Problem, das du nicht lösen kannst)
Allerdings, ich möchte schon gern diese Schnittstelle beherrschen und es ärgert mich, wenn ich nicht verstehe, wie’s funktioniert, wenn du verstehst, was ich meine...
Danke jedenfalls für deine Antwort, und wenn ich Probleme mit Zugriff auf den seriellen Port bekomme, weiß ich, wen ich fragen kann.
Martin
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 10.05.06 09:46
Moin!
Martin Vogel hat folgendes geschrieben: | | Wenn du mit deinem Beitrag meinst:“benutz einen alten Rechner mit Win9x und bastel da alles rein, greif über Assembler zu und hol die Daten übers Netzwerk“ dann ist dies sicherlich eine Möglichkeit. Ansonsten war die Info nich sehr hilfreich. |
Man muss sich auf neue Infos auch einlassen wollen...
Mein Ansatz ist praktisch der von bunbury, nur noch einen Schritt weiter: Die komplette Loslösung von Schnittstellen zur Hardwareansteuerung im lokalen PC. Der vorgeschlagene XPORT ist ein embedded-device-server mit einer seriellen Schnittstelle, die dann über das Netzwerk (als TCP Channel) zur Verfügung gestellt wird  noch mehr API-Orientierung wird dann wohl kaum mehr möglich sein, da du dann mit deiner Hardware sogar komplett vom verwendeten OS unabhängig bist.  Von den Vorteilen eines Netzwerkkabels ggü. einer seriellen Strippe mal ganz zu schweigen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
oldmax 
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mi 10.05.06 10:38
Hi Narses
Sorry, aber ich wollte ja auch nicht gleich mit Kanonen auf Spatzen schießen. Also, Thema ist Zugriff auf LPT-Port unter Verwendung der WinApi. Ich weiß, das heutige Steuerungen über Netzwerk bedient werden. Aber ob das der Weg ist, eine Eisenbahnanlage zu steuern, oder abends zur Dunkelheit die Rolläden im Haus zu schließen ? Ich mein, wer da professionelle Technik einsetzen will, ist hier eh in der falschen Sparte. Nix für ungut, ich glaub dir, das dein Rat gut gemeint war, nur mir hilft er nicht, da ich ein neugierig Mensch bin und verflucht, was Billi kann, will ich auch.... (oder so ähnlich)
Also ich würd gern wissen, wer kann mir erklären, wie und welche Routinen der WinApi angesprochen werden müssen, damit ich das Muster „11001001“ oder den Bytewert 201d oder den Wert C9h zum LPT-Port ausgeben kann und vielleicht anschließend den Wert eines eingelesenen Bytes im Akku im Programm zur Verfügung habe.
Nebenbei, ich will nich die In- oder Out- Assemblerbefehle. Das ist nicht mein Problem. Ich wollte eine Antwort auf „Wie kann... „
So, ich hoffe, in den Weiten der Delphi-User findet sich einer, der bereit ist, mir dies zu erklären....
Ansonsten, na ja, die alte Lösung war ja auch nicht soooo schlecht.
Gruß Martin
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Bunbury
      
Beiträge: 115
|
Verfasst: Mi 10.05.06 12:39
.
Mit dem seriell -> parallel Wandler-IC meinte ich einen Microcontroller.
Den hättest Du fertig programmiert von mir zum Einkaufspreis bekommen. Ich verwende das Wort Microcontroller nur nicht gerne - damit verschreckt man viele weil es gleich kompliziert klingt. Mit rudimentären Elektronikkenntnissen kriegt man das aber auch an 2 Abendenden selbst hin.
Bis 115 kBaud habe ich übrigens mit dem µC nur beste Erfahrungen gemacht - ich habe mir einen Datenlogger damit gebaut, der mit gut 1kS/s 6 Analogeingänge einliest und auf den PC sendet.
Serielle Empfänger lassen sich übrigens auch beliebig parallel schalten - 100 Ein-/Ausgänge wäre garkein Problem.
Noch was zum LPT-Port: neuere Parallelportkarten melden sich unter XP z.B. garnicht mehr als "echte" Parallelports an - sondern als allgemeine Controllerkarte und die simulieren nur einen LPT-Port. Ich habe ewig gesucht und keine Karte mehr gefunden, die sich noch "echt" als Parallelport anmeldet.
Bei den API-Prozeduren um das Ding anzusprechen habe ich mir dann die Karten gelegt.
Also sehr zukunftsträchtig ist die Variante definitiv nicht! Der LPT-Port ist am Aussterben.
MfG
Bunbury
.
|
|
oldmax 
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mi 10.05.06 13:19
Hi
Zuerst möchte ich euch auf meine Namensänderung hinweisen. Vielleicht habt ihr's schon gemerkt, aber wenn nicht, schaut mal "oldmax". das bin ich. Vielleicht kennt mich ja jemand von anderen Websites.
@Bunbury
Ok, zurück zum Thema. Hast du Schaltungsunterlagen für den Microcontroler, evtl. eine Platine ? Ich brauche 8 Ein und 8 Ausgänge. Vorerst...
Also, verschrecken tut mich das Wort Microcontroler nicht, aber bisher habe ich mene Schaltungen immer noch diskret aufgebaut, warum nicht mal was "neues" ausprobieren. Wenn's klappt, hab ich sowieso Vorteile...
Also, ich halt mich nicht unbedingt am LPT fest, obwohl, der Gedanke aufgegeben zu haben... schrecklich. Noch bin ich der Herr über Blech und Plaste... oder nich ??????
Martin
_________________ Zier dich nich so, ich krieg dich schon....
|
|
Bunbury
      
Beiträge: 115
|
Verfasst: Mi 10.05.06 14:10
.
Ich bin ja auch gebürtiger Elektroniker und habe jahrelang alles diskret aufgebaut - von Schnittstellen bis Analogverstärker...
Ich dachte für µCs bräuchte man Programmiergeräte, das wäre alles Assembler und die Dinger selbst sind teuer/kompliziert.
Blödsinn - 1m fünfadriges Kabel zum Programmieren direkt vom µC an den PC, Freeware installiert und nach einer halben Stunde und keinen 10,-Eur Materialaufwand hat man in Basic/Pascal/C sein erstes Programm drauf. Die Compiler sind so gut, daß man den Code kaum von Assemblerprogrammen unterscheiden kann - weder von der Programmgröße, noch von der Verarbeitungsgeschwindigkeit.
Heute ärgert mich die verplämperte Zeit - jetzt baue ich Dir mit µC einen kompletten MP3-Player in der Zeit zusammen, die ich früher für einen Impulszähler gebraucht habe.
Es gibt fast keine Schaltung mehr wo ich keinen µC drin habe - sobald es mehr als 2 diskrete ICs werden kommt immer ein µC rein, nur um mir Lötaufwand zu sparen. Ich denke, Dir wird es ähnlich gehen.
Weil ich in etlichen Foren Elektronik-Anfängern bei Ihren ersten Schritten helfe und immerwieder die selben Fragen kommen habe ich das mal in einem kleinen Tutorial zusammengeschrieben: www.bunbury.de/avr/
Wenn Du das gelesen hast weißt Du alles was Du brauchst. Der Beschaltungsteil fehlt im Script noch teilweise - ich denke das hast Du selbst drauf.
Für die serielle Kommunikation: ein Pegelwandler-IC (Max232) von RS232 auf TTL brauchst Du nur, wenn Du auch Daten vom µC zum PC senden willst. Willst Du nur empfangen langt ein Transistor mit Open-Collector vor'm Eingang völlig.
MfG
Bunbury
.
|
|
oldmax 
      
Beiträge: 380
D3 Prof, D4 Prof
|
Verfasst: Mi 10.05.06 17:57
Hi Bunbury
Ich bin dir was schuldig. Dein Tutorial ist wirklich gut. Ich denke mal, mit dieser Info kann ich die nächsten Schritte einleiten. Sollte es dich interessieren, frag einfach nach meinen Projekten.
Gruß Martin
_________________ Zier dich nich so, ich krieg dich schon....
|
|
|