![]() |
Einlesen von Daten über Parallele Schnittstelle
Hallo Leute,
Diese Anfrage habe ich auch im Delphiforum eingestellt. ich habe ein Programm geschrieben, mit dem ich momentan über die serielle Schnittstelle Daten von verschiedenen Brandmeldeablagen empfangen kann und als Ereignisdrucker verwenden kann. Das einlesen mache ich über die Komp. ComPort Library 3.0
Delphi-Quellcode:
Jetzt habe ich folgendes Problem. Ich habe eine Anlage die mir nur einen Parallelen Port zur Verfügung stellt, wo ich direkt einen Nadeldruckeranschließen kann.
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var Str: String; begin ComPort1.ReadStr(Str, Count); Buffer := Buffer + Str; Bufferverarbeitung; end; Ich kann diese Daten auch ohne weiteres mit einem Parallel/Seriell Wandler an mein Progamm übergeben. Jetzt ist meine Frage, kann ich mir diesen Wandler irgendwie sparen und z.B. über die Parallele Schnittstelle von meinem PC die Daten einlesen und durch meine Software umwandeln lassen. Für Hilfe bin ich Euch jetzt schon dankbar. MFG Jens [edit=Phoenix]Delphi-Tags eingebaut. Das nächste mal bitte selber machen. Mfg, Phoenix[/edit] |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
der parallel/seriell Wandler macht der "nur" die Umwandlung oder entfernt er auch noch die Druckersteuerzeichen? Wenn er nur die Wandlung macht, dann sollte es möglich sein, die Daten direkt von der Parallelschnittstelle zu nehmen und zu verarbeiten. Grüße Klaus |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo Klaus,
Die Steuerzeichen entferne ich in meiner Software selber. Der Wandler setzt also lediglich das Siganl von Seriell auf Parallel um. Wie könnte ich den an dieses Problem dran gehen. MFG Jens :zwinker: |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo Jens,
ich habe noch nicht mit der Parallelschnittstelle gearbeitet aber bei der Suche im Netz stößt man schon auf die ein oder andere Möglichkeit. Ein Möglichkeit ist die ![]() Diese bietet allerdings keine Events an. Es ist damit also nur möglich die Schnittstelle zyklisch abzufragen (Threads). Was aus der ![]() Es gibt Komponenten die auch für die Parallelschnittstelle Events bereitsstellen, diese sind aber meistens kostenpflichtig. -> ![]() Grüße Klaus |
Re: Einlesen von Daten über Parallele Schnittstelle
|
Einlesen von Daten über Parallele Schnittstelle
Hallo,
Ja eigentlich wäre es ja wichtig für mich zu verstehen, wie ich Hardwaremäßig das Kabel zu belegen habe, um Die Daten von meiner Parallelen Ausgangsschnittstelle Brandmeldeanlage auf entweder meine LPT1 oder meine COM1 anschließen, um dann die Daten einzulesen und zu wandeln, um Sie anschließend genau so zu behandeln wie die Daten die Direkt von einer Seriellen Druckerschnittstelle kommen. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
wenn die Brandmeldeanlage eine Parallelschnittstelle hat, dann kannst Du da nicht direkt die Serielleschnittstelle des Rechners anschließen. Bei der parallelen Schnittstellen werden die Daten parallel gesendet. Du bekommst also z.B. ein Byte in seiner gesammten Breite präsentiert. Wie die Pinbelegung der Brandmeldanlage ist, darüber sollten die Unterlagen der Anlage Dir Auskunft geben können. Grüße Klaus |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo Klaus,
Ja das mit Parallel und seriell ist mir schon Klar. Das Problem ist, die Belegung ist wie ein Normales Druckerkabel. Meine Brandmeldeanlage hat somit einen ganz normalen 25pol Stecker und am Ende schließe ich über Centronics Stecker einen Nadeldrucker z.B. an. Drucker in der BMA angelegt (Funtz) So jetzt soll mein PC ja der Drucker sein, wie diese Belegung dan an meiner LPT1 am PC sein müßte weiß ich nicht. Evtl. einfach 1:1 ? Das Problem ist halt, ich habe mich zwar versucht damit zu beschäftigen, aber wenn so nicht viel mit parallen Schnittstellen zu tun hat ist es halt auch schwer die richtigen Unterlagen oder Hilfen zu sehen. So und jetzt mal noch ne andere Frage. Ich habe bislang schon mal Frage im Delphi-Forum sowie bei Delphi-Praxis eingestellt und aber gemerkt, das das schon mal als negativ angesehen wird. Wie kann ich den dann ein Cross-Posting einricheten. MFG Jens Sorry für die vielen noch unerfahrenen Fragen. |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
NEIN, die parallele Schnittstelle ist nicht symmetrisch wie z.B. V24, vielmehr sieht die Druckerseite ganz anders aus als die Sendeseite am PC. Es war ja auch nur eine Richtung vorgesehen, vom PC zum Drucker, die Empfangselektronik, die ein Centronicsdrucker hat, gibt es am PC nicht. Spätere Erweiterungen der Centronics-Schnittstelle auf bidirektional erlauben zwar die Übertragung auch in Gegenrichtung, aber die funktioniert immer noch anders als die vom PC zum Drucker. Ganz abgesehen davon müsstest du für einen Centronics-Eingang nicht nur die Hardware haben, sondern auch einen Windows-Treiber. Die einzige relle Chance wäre daher ein Wandler Centronics -> seriell, den du dann an eine COM-Schnittstelle des PCs anschliessen könntest. Vor ganz ganz langer Zeit hatte ich mal einen Wandler seriell -> Centronics, um einen Drucker von seriell aus ansteuern zu können, sowas gibt es aber kaum noch (laut Intel darf es ja weder seriell noch parallel in einem heutigen PC geben), und die Richtung, die du bräuchtest, hat es wahrscheinlich nie zu kaufen gegeben. Ich glaube, ich habe sogar sowas Ähnliches für Werkzeugmaschinen mal gebaut, aber das muss so etwa 1975 gewesen sein und die Unterlagen sind längst vernichtet, auch die ICs darin gäbe es nicht mehr. Nach heutigen Massstäben wäre das Gerät auch nicht bezahlbar. Gruss Reinhard |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
Zitat:
@Jens: Deshalb mein Link (weiter oben), siehe auch ![]() |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo zusammen,
Also sehe ich das richtig, es gibt keine Möglichkeit für mich Daten die auf meiner Parallelen Schnittstelle ankommen, in irgendeiner Art und Weise zu verarbeiten. Es muss doch die Möglichkeit geben. Ich kann doch zum Beispiel auch zwei PC´s mit einander (Direktverbindung z.B. PC Anywhere) verbinden. Auch LPT mäßig. Jetzt müsste ich doch ein Schnittstellenkabel nehmen können 25/25pol 1/1 und das von meiner Brandmeldeanlage an die LPT1 von meinem PC anbindnen. Jetzt sendet die BMA, und die Daten kommen Parallel auf meiner LPT an. Jetzt, so denke ich zumindestens, müsste meine Software diese Daten Parallel einlesen, und dann als String umwandeln können. Hat vieleicht noch jemand eine Idee. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Danke Omata,
Diese Belegung habe ich z.B. gesucht. Werde mich jetzt erstmal damit beschäftigen. Jetzt ist nur die Frage wie ich die Daten Software Mäßig von Parallel auf Seriell (String oder so) umwandeln lassen kann. Das heißt eigentlich, wie kann ich überhaupt die Daten die auf der Parallelen Schnittstelle ankommen lesen? MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
|
Re: Einlesen von Daten über Parallele Schnittstelle
Das sieht ja alles schon mal Hoffnugsvoll aus,
Jetzt ist nur für mich die Frage, ob es da wohl irgendwo eine Erklärung auf Deutsch zu gibt. Werde aber das Projekt jetzt erstmal unter die Lupe nehmen und prüfen. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
Initialisierung, Beenden, Wert schreiben/lesen und den Interrupt-Handler. Also was will man mehr? |
Re: Einlesen von Daten über Parallele Schnittstelle
So, habe die ganze Sache jetzt mal auf Englisch gefunden,
Ist zwar nicht gerade meine Heimatsptach aber man kommt mit klar. ![]() |
Re: Einlesen von Daten über Parallele Schnittstelle
Das ist aber die inpout32.dll und nicht xDrv. Mit der inpout32.dll kannst du keinen Interrupt-Handler einrichten. Das geht natürlich auch, dann musst du allerdings ständig den LPT-Port abfragen, ob da gerade gedruckt werden soll.
|
Re: Einlesen von Daten über Parallele Schnittstelle
|
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
|
Re: Einlesen von Daten über Parallele Schnittstelle
Das Funktioniert,
Ich bekomme zumindestens ein Siganl, Leider sieht das ´Value immer gleich aus, und das kann eigendlich nicht sein. Ich bekomme als antwort immer PORT Value 100 MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo nochmal zusammen,
Bin leider noch nicht so richtig weiter mit meinem einlesen auf der Parallelen Schnittstelle. Gibt es nicht irgendeinen Komponente die mir dies möglich macht. Hat vieleicht noch jemand eine Idee. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Hi
Wenn du die inpout32.dll benutzt, dann könnte ein altes Tutorial von mir hilfreich sein. ![]() Hier hatte ich mal beschrieben, wie eine parallele Schnittstelle zur Signalerfassung benutzt werden kann. So wie du schreibst, liest du zwar die Schnittstelle aus, hast sie jedoch noch als Ausgabe geschaltet. Es gibt ein Steuerregister, wo ein Bit umgeschaltet werden muß, damit du Daten einlesen kannst. Ist in dem Tutorial beschrieben. Ich hofe, der Link funktioniert, ansonsten schau mal unter meinem Namen in der Suche nach dem Tutorial. Hab das ungefähr 2006 verfasst und eingestellt. Gruß oldmax |
Re: Einlesen von Daten über Parallele Schnittstelle
Danke oldmax,
Habe mir das Tutorial geladen und werde das mal durcharbeiten. Du machst mir ja wenigstens Hoffnung, das es gehen könnte. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Hallo nochmal zusammen,
Habe mir jetzt die Async Pro geladen und als Komponente installeiert, und ein bißchen mit Rumexperimentiert. Leider kann ich nichts finden, womit ich eventuell auf die Paralleleschnittstelle zugreifen könnte. Gibt es jemanden, der damit schon Erfahrungen gesammelt hat. Oder noch jemanden der einen andere Idee zu meinem Problem hat. MFG Jens :gruebel: |
Re: Einlesen von Daten über Parallele Schnittstelle
Hi Jens
Nun ja, ich habe die parallele Schnittstelle schon benutzt, auch mit Interupt. Allerdings noch mit Turbopascal unter Win 3.11, also unter DOS. Soweit ich aber weiß, st InpOut32.dll ein Treiber, der dann den direkten Zugriff auf die Portadresse zuläßt. nun weiß ich noch, das zur Portadresse auch die Adressen von 2 weiteren Registern ehört. Darum lies dir mal die entsprechenden Stellen im Tutorial durch. Ich habe damals die Info aus PC-Intern, einer ziemlich dicken Schwarte, aber mit er genauen Beschreibung der Schnittstellen. War damals für die 286er Reihe gültig, denke aber, da hat sich nicht allzuviel geändert. Bei meinen Versuchen unter Win98 hat der Zugriff auch mit Pentium 5 funktioniert. Gruß oldmax |
Re: Einlesen von Daten über Parallele Schnittstelle
Das habe ich schon so nweit glaube ich zumindestens jetzt verstanden, ich habe allerdings das Tutorial noch nicht ganz gelesen, werde das jetzt mal nachholen.
Allerdings bin ich durch das ganze Suchen hier im Internet echt verunsichert, weil ich schon mehrmals gelesen habe, das das ab WIN2000 wohl problematisch ist. |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
AsyncPro kann "nur" seriell, das aber recht gut. Grüße Klaus |
Re: Einlesen von Daten über Parallele Schnittstelle
Hi
Nicht problematisch, ein einfacher Portzugriff in der Art
Delphi-Quellcode:
ist schlichtweg nicht möglich.
asm
Mov DX, $378h // Portadresse in DX Register schreiben In AL, DX // Port in AL Register lesen Mov ReadLPTPort, AL // Wert aus AL Register in Variable eintragen end; Du kannst aber z.B. im Win98-Modus das Programm starten, oder einen Treiber benutzen, der den direkten Zugriff erlaubt. Richtige Treiber benutzen die Win-Api, andere "einfache" beeinflussen die Bits, die für die Zugriffssperre verantwortlich sind, und heben diese auf. Frag mich jetzt bitte nicht, wie man das macht, ich habe mich entschlossen, alle Hardware-Ideen mit Microcontroler umzusetzen. Da gibt's die serielle Kommunikation und damit kann ich leben. Für einige Aufgaben ist's sowieso besser, da der MC wesentlich schneller Ereignisse erfassen kann. Außerdem ist's mal wieder was Neues und äußerst interessant. Die Neugier stirbt eben nie.... Gruß oldmax |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
dann bin ich ja wenigstens nicht ganz verblödet. Gibt es denn irgendeine Komponente die Parallel kann? MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Zitat:
Edit: Sogar zwei verschiedene! |
Re: Einlesen von Daten über Parallele Schnittstelle
Sorry Omata,
Das weiß ich, allerdings habe ich damit jetzt ein Problem, es scheint mir so als habe ich das mit den dll´s nicht so richtig verstanden, wie wende ich den sowas überhaupt an. Sorry, aber davon habe ich gar keine Ahnung. MFG Jens |
Re: Einlesen von Daten über Parallele Schnittstelle
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe mich nochmal damit beschäftigt.
Das xDrv-Beispiel funktioniert wunderbar. Wichtig ist, dass im BIOS eingestellt ist, dass der Parallelport auch auf EPP und/oder ECP gestellt ist. Dies ist wichtig, damit der Bidirektionale Betrieb überhaupt funktioniert. Also das Lesen von D0-D7. Um den Interrupt benutzen zu können ist wichtig, dass in den Systemeinstellungen von Windows (Gerätemanager) der Interrupt aktiviert/erlaubt wird. Um nun Daten lesen zu können, muss das Extended Control Register (ECR) auf Bidirektional umgestellt werden. Das bedeutet, dass es nun zwei Möglichkeiten gibt Daten zulesen. Es ist nun möglich das Outputregister auszulesen, also den Wert, den der PC auf die Pins (D0-D7) legen möchte. Oder aber man ließt die Werte aus, die tatsächlich von außen an die Pins (D0-D7) angelegt werden. Beim Schreiben der Werte muss das ECR auf Output geschaltet werden, damit die Werte, die rausgeschrieben werden sollen auch wirklich an den Pins angelegt werden. Ich habe dazu mal eine kleine Beispielanwendung geschrieben. Mit einem Multimeter und einem kleinen Stück Leitung konnte ich so alle möglichen Kombinationen super austesten. Hinweis: Das Initialisieren des Treibers funktioniert nur mit Administratorrechten! Kombinationen: - Pin 10 auf Masse ziehen -> Interrupt wird ausgelöst - Pin 2 - 9 auf Masse ziehen -> Port lesen ergibt den zugehörigen Dualwert - Pin 2 - 9 Multimeter anschließen -> Port schreiben, erzeugt 0V bzw. 5V am jeweiligen Pin |
Re: Einlesen von Daten über Parallele Schnittstelle
Super Omata,
Das habe auch ich jetzt endlich soweitgehend verstanden. Ich werde mich morgen direkt daran geben, das auszuprobieren. Ich denke die Einstellungen im BIOS und Windows haben gefehlt. Weiß nicht so genau. Danke dir erstmal für die vielen, vielen Bemühungen. Jens |
AW: Einlesen von Daten über Parallele Schnittstelle
Hallo und einen schönen guten Abend zusammen,
ich möchte mein altes Thema nochmal aufgreifen, jddoch mit einem anderen Lösungsansatz. Ich habe für das vorhandene Problem bereits eine Lösung, möchte das ganze allerdings verbessern. Mein Gedanke wäre jetzt folgender... Gibt es einen Konverter, welcher mein paralleles Signal auf Usb wandelt und welches ich dann über die USB Schnittstelle in mein Programm integrieren kann. Um hier eine Lösung zu finden wäre ich an Links zu solchen Konvertern, Tutorials über USB mit Delphi und eventuellen Komponenten für Delphi 2007 oder XE 2 interessiert. Vorab schon mal vielen Dank Gruß Jens |
AW: Einlesen von Daten über Parallele Schnittstelle
Also, ich hab von SiliconLabs den CP2110 viel im Einsatz. Der Macht aus einer RS232 ein HID-Device, das dann einfach über die bekannten HID-Klassen angesprochen werden kann.
Vielleicht haben die ja auch was für Parallel? Luggi |
AW: Einlesen von Daten über Parallele Schnittstelle
Eben gegoogelt, sollte doch kein Problem sein
|
AW: Einlesen von Daten über Parallele Schnittstelle
Sowas:
![]() |
AW: Einlesen von Daten über Parallele Schnittstelle
Zitat:
|
AW: Einlesen von Daten über Parallele Schnittstelle
Vor allem, es werden keine Daten, die über die centronics kommen an die Serielle Schnittstelle weitergeleitet. Denn dafür wären ein paar KB-Puffer ganz nützlich.
Der Vorteil der Centronics-Schnittstelle ist ja, daß die Daten so schnell fließen, wie die beiden Geräte Daten schaufeln wollen/können. Soweit ich weiß, sind alle seriellen Schnittstellen getaktet, also mußt Du etwas "Intelligenz" zum übersetzen haben. Gruß K-H |
AW: Einlesen von Daten über Parallele Schnittstelle
Soll es nicht doch ein USB-Centronics-Converter sein?
Zitat:
Wäre ![]() Na, auf jeden Fall müsste ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz