Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mal wieder Serielle Schnittstelle :) (https://www.delphipraxis.net/33776-mal-wieder-serielle-schnittstelle.html)

Johannes Maier 12. Nov 2004 12:58


Mal wieder Serielle Schnittstelle :)
 
Hi,

ich habe ein paar Fragen, die auch nach Bedienung der Suchfunktion noch nicht selbst beantworten konnte:
Ich möchte, dass PIN Nummer 2 der Seriellen Schnittstelle gesetzt wird, nun habe ich mir zur Verwirklichung die IO.dll runtergeladen und eingebunden. Ich hab also jetzt die zwei Funktionen
Delphi-Quellcode:
procedure PortOut(Data: Word; Wert: Byte); stdcall; external 'io.dll';
function PortIn(Data: Word); stdcall; external 'io.dll';
Damit kann ich auch Werte setzen (in $378) allerdings hab ich eine Sache nicht wirklich verstanden: Was sind denn Serielle Schnittstelle - Parallelport, bzw. gibt es da einen Unterschied.
Die Frage stelle ich mir, da mir jemand im DF geschrieben hat, dass man die Sache mir der Ansteuerung der Seriellen Schnittstelle auch über den Parallelport regeln könne (hoffe ich hab das so richtig wiedergegeben). Er hat aber auch gemeint, dass es da 8 Datenleitungen oder so gibt, D0-D7 ... auf dem Stecker, den ich in LPT1 stecke, sehe ich aber auf der einen Seite 13 Anschlüsse, auf der anderen 12. Ich muss auf der Seite mit den 13 Anschlüssen den zweiten ansprechen/steuern können.
Wie geht das jetzt?
Hoffentlich könnt ihr mir (oder besser demjenigen, der mich das gefragt hat :)) helfen,

Johannes

Bernhard Geyer 12. Nov 2004 13:12

Re: Mal wieder Serielle Schnittstelle :)
 
Serielle und Paralle Schnittstellen sind 2 Paar Stiefel. Es sind große Unterschiede vorhanden.

Der Name sagt schon viel. Über die serielle Schnittstelle werden alle Bits einer Kommunikation seriell übertragen. Bei der (beim PC gebräuchlichen) parallen Schnittstelle werden 8 Bits parallel übertragen. Für jede Schnittstelle gibt es diverse Steuerleitungen (Masse, Tasksignal u.ä.), weshalb auch mehr als 9 (8 Signalleitungen + Masseleitung) bei der Parallen Schnittstelle und mehr als 2 (Signalleitung + Masseleitung) bei der seriellen Schnittstelle vorhanden sind.

Sag einfach mal was du Steuern willst. Für serielle Kommunikation gibt es viele fertige Komponenten (z.B. AsyncPro), welche dir einen großteil der Basis-Kommunikationsarbeit abnehmen. Bei der bidirektionalen parallen Schnittstelle schaut es schlechter aus (wußte auch keine Lösung welche von 9x-2003 funktionieren würde).

Johannes Maier 12. Nov 2004 13:17

Re: Mal wieder Serielle Schnittstelle :)
 
Ein Freund von mir möchte eine Waschmaschine an seinen PC anschließen (über LPT1) und ich soll das Kommunikationsprogramm schreiben. Er hat sich da einen Stecker gebastelt, der an der Seriellen Schnittstelle angebracht wird. Und zwar ist dort am zweiten Anschluss von links in der Reihe, wo 13 Anschlüsse sind, das Kabel "angelötet". Das ist soweit ich ihn verstanden hab dafür zuständig, dass die Waschmaschine angeht. Diesen PIN soll ich nun mit einem Programm ansteuern und setzen können.
Allerdings weiß ich nicht genau, wie ich das bewerkstelligen soll :) und hoffe auf nützliche Tipps/Links von euch :)
Achja, ich soll noch fragen, ob ich da einen Widerstand auslesen kann (kA was er damit genau meint)

Gruß
Johannes

Gruber_Hans_12345 12. Nov 2004 13:38

Re: Mal wieder Serielle Schnittstelle :)
 
Zitat:

Zitat von Johannes Maier
Ein Freund von mir möchte eine Waschmaschine an seinen PC anschließen (über LPT1) und ich soll das Kommunikationsprogramm schreiben. Er hat sich da einen Stecker gebastelt, der an der Seriellen Schnittstelle angebracht wird

Na was nun ? LPT1 ist eine parallele Schnittstelle.
Zitat:

Zitat von Johannes Maier
Und zwar ist dort am zweiten Anschluss von links in der Reihe, wo 13 Anschlüsse sind, das Kabel "angelötet". Das ist soweit ich ihn verstanden hab dafür zuständig, dass die Waschmaschine angeht. Diesen PIN soll ich nun mit einem Programm ansteuern und setzen können.
Allerdings weiß ich nicht genau, wie ich das bewerkstelligen soll :) und hoffe auf nützliche Tipps/Links von euch :)

Besorg dir mal ne Dokumentation von dem parallelen Stecker, wirst sicher einiges im Netz finden Google und so. Dor wird dann irgendwo erklärt sein, welcher Pin welche Funktion hat.
Dann steht dort auch welcher Pin D0 bis D7 ist (was ich noch weis, müßte Pin2 D0 sein, Pin3 D1 .....)

Dann kanst mit der DLL von oben einfach die Werte schreiben 0 alles aus (Wert mußt binär zusammenrechnen D0 .. 1, D1..2, D2..4, D3...8 ...)
[/quote]

Zitat:

Zitat von Johannes Maier
Achja, ich soll noch fragen, ob ich da einen Widerstand auslesen kann (kA was er damit genau meint)

Würde theoretisch gehen, wird aber etwas komplizierter, entweder mit AD Wandler werklen, oder mit einem Kondensator -> aufladen des Kondensators -> entladen über Widerstand und zeit messen (am PC) bis der Wert unter einen bestimmten Pegel fällt.
Wirst aber in jeden Fall eine kleine externe Schaltung brauchen

Johannes Maier 12. Nov 2004 14:04

Re: Mal wieder Serielle Schnittstelle :)
 
Vielen Dank, ich hab das jetzt mit Seriell oder Parallel endlich verstanden :)
Hab auch eben erst erfahren, dass der Stecker in den parallelen Steckplatz muss, da ich mich da aber nciht auskenne und er gesagt hatte, es sei über Seriell zu regeln .....
So werd ich schon eine Lösung finden, danke ;)

Hmm, welche Zahl muss ich mit PortOut($378, zahl) übergeben, damit ich den zweiten Anschluss von links auf der längeren Seite des Parallelports aktivieren kann, und wie kann ich ihn wieder deaktivieren?

Gruber_Hans_12345 12. Nov 2004 15:47

Re: Mal wieder Serielle Schnittstelle :)
 
Zitat:

Zitat von Johannes Maier
Vielen Dank, ich hab das jetzt mit Seriell oder Parallel endlich verstanden :)
Hab auch eben erst erfahren, dass der Stecker in den parallelen Steckplatz muss, da ich mich da aber nciht auskenne und er gesagt hatte, es sei über Seriell zu regeln .....
So werd ich schon eine Lösung finden, danke ;)

Hmm, welche Zahl muss ich mit PortOut($378, zahl) übergeben, damit ich den zweiten Anschluss von links auf der längeren Seite des Parallelports aktivieren kann, und wie kann ich ihn wieder deaktivieren?

vermute mal PortOut($378, 1); zum einschalten und PortOut($378, 0) zum auschalten,
aber zum testen kannst ja einfach mal alle Datenbits auf 1 stellen (hängst die restlichen einfach ab)
PortOut($378, 255) alle bits ein und PortOut($378, 0) alle bits aus

Johannes Maier 12. Nov 2004 19:10

Re: Mal wieder Serielle Schnittstelle :)
 
Hmm jo so ungefähr hab ich mir das auch gedacht. Aber da es doch 256 gibt (oder?), müsste dann nicht PortOut($378, 0) beim o. (also quasi 1.) ein Datenbit setzen und nur die anderen 255 löschen?

Gruber_Hans_12345 16. Nov 2004 08:08

Re: Mal wieder Serielle Schnittstelle :)
 
Zitat:

Zitat von Johannes Maier
Hmm jo so ungefähr hab ich mir das auch gedacht. Aber da es doch 256 gibt (oder?), müsste dann nicht PortOut($378, 0) beim o. (also quasi 1.) ein Datenbit setzen und nur die anderen 255 löschen?

ne, es gibt nur werte von 0d bis 255d (0000.0000b bis 1111.1111b) 8 Bit kannst es ja im Windows-Rechner mal testem, 256d ist schon 1.000.000b


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 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