![]() |
RS232 Problem
Morgen zusammen. Ich habe folgendes Problem (ich hoffe das ist die Richtige Sektion):
Die Geschichte: Auf der Arbeit haben wir eine Alarmanlage, an die man direkt einen Drucker (entweder über parallel oder seriellen Anschluß) anschließen kann. Immer wenn die Alarmanlage nun ein Event auslöst (bzw eine bestimmte Zahl von Events , wie z.b. das Scharf - / Unscharfschalten , oder wenn ein Alarmausgelöst wird) dann wird quasi das Log auf dem Drucker ausgegeben, ungefähr in dieser Form:
Code:
Die Aufgabe:
Ereignis : 0540
Datum : 21.02.2004. Uhrzeit: 17:50:55 Extern Scharf Bereich 5 Keller EDV Raum Ich soll nun ein Programm schreiben, wobei statt dem Drucker ein PC an die RS-232 Schnittstelle angeschlossen, die Daten, die eigentlich an den Drucker gesendet werden gespeichert und in eine Datenbank geschrieben werden. Dazu müssen sie natürlich vorher vernünftig geparsed werden. Das Problem: Inzwischen habe ich eine Komponente gefunden, mit der man Char für Char einlesen kann, was über den Com-Port reinkommt (AsynchPro heisst die Komponente). Da ich jedoch nicht so ohne weiteres an die Alarmanlage ran darf, weiß ich leider nicht, in welcher Form die Daten an den Drucker gesendet werden...also weiß ich auch nicht, wie ich diese Parsen muss. Kann mir jemand sagen, wie die Daten gesendet werden? Kommen da ganze Strings zusammen? (bzw char für char) Ich habe die Schnittstelle bisher nur mit einer alten Com-Maus getestet und die sendete nur verwirrende Ascii Zeichen. Ich bin für jede Hilfe sehr Dankbar. |
Re: RS232 Problem
an den drucker werden die daten per druckertreiber übermittelt. Das heißt es kommen dir unverständliche zeichen an dem anschluss an die der drucker in aller regel auswertet und auf papier umsetzt.
|
Re: RS232 Problem
Hai perle,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS". Ich gehe mal davon aus das der Drucker ein einfacher Nadeldrucker mit Endlospapier ist? Im Allgemeinen senden Alarmanlagen reine ASCII-Zeichen zu den Druckern. Es sollte also ziemlich einfach sein die Daten auszulesen. Zum testen würde ich empfehlen ein einfaches Terminalprogramm an die Anlage zu hängen und mal zu schauen was da so ankommt. Zitat:
|
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Windows API" nach "Sonstige Fragen zu Delphi" verschoben.
Ich denke hier ist die Frage ersteinmal am besten aufgehoben |
Re: RS232 Problem
Zitat:
Zitat:
Zitat:
Wegen dem Terminal programm....wie mache ich das? Funktioniert es , wenn ich per Com Kabel 2 PC's verbinde und mit dem Hyperterminal Daten versende? [/quote] |
Re: RS232 Problem
Zitat:
Bei den Anlagen an denen ich früher (lange ist es her) mal gesesen habe wurde wirklich reiner ASCII-Code gesendet. Inklusiver der normalen ASCII-Steuerzeichen für Wagenrucklauf und Zeilenwechsel. Zitat:
|
Re: RS232 Problem
Hallo Perle,
über eine serielle Schnittstelle kommen die Zeichen erst mal grundsätzlich char für char. Du mußt dir also die Strings selber zusammenbauen. Das Zeilenende dürfte ein CarriageReturn LineFeed sein. Alles was der Drucker ausgibt dürfte als darstellbarer ASCII-Code kommen. Du mußt jedoch auch mit FormFeeds rechnen mit denen dem Drucker mitgeteilt wird das jetzt eine Seite rum ist und es ist auch nicht auszuschließen das noch irgendwelche anderen Kommandos an den Drucker geschickt werden. Wenn du wirklich was anständiges Programmieren willst mußt du entweder an die Alarmanalage ran oder brauchst zumindest ne entsprechende Doku. Wenn du AsyncPro benutzt sollte bei den Demos auch ein Terminal-Programm dabei sein, das kannst du ja für die ersten Steps benutzen. Dann hast du auch schon mal ne Programmiergrundlage. |
Re: RS232 Problem
[quote="UweR"]Hallo Perle,
[...] über eine serielle Schnittstelle kommen die Zeichen erst mal grundsätzlich char für char. Du mußt dir also die [...] Unter ![]() Im Ergebnis erhälst du eine komplette Zeile als String. Beste Grüße Michael |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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