Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RS232 Problem (https://www.delphipraxis.net/27433-rs232-problem.html)

perle 10. Aug 2004 08:11


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:
Ereignis : 0540
Datum : 21.02.2004. Uhrzeit: 17:50:55
Extern Scharf
Bereich 5 Keller EDV Raum
Die Aufgabe:

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.

SirThornberry 10. Aug 2004 08:14

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.

Sharky 10. Aug 2004 08:18

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:

Zitat von perle
..(ich hoffe das ist die Richtige Sektion...

Nicht wirklich ;-) Darum verschiebe ich die Frage mal.

DP-Maintenance 10. Aug 2004 08:19

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

perle 10. Aug 2004 08:32

Re: RS232 Problem
 
Zitat:

Zitat von Sharky
Hai perle,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS".

Dankeschön....und auch für die schnelle Antwort.

Zitat:


Ich gehe mal davon aus das der Drucker ein einfacher Nadeldrucker mit Endlospapier ist?

richtig

Zitat:

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.

puh, hoffe ich mal dass das stimmt, wenn das mit dem Druckertreiber so sein sollte, dann gute nacht :(
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]

Sharky 10. Aug 2004 08:41

Re: RS232 Problem
 
Zitat:

Zitat von perle
...puh, hoffe ich mal dass das stimmt, wenn das mit dem Druckertreiber so sein sollte, dann gute nacht :(

Halte ich ersteinmal für unwahrscheinlich. Dann müsste der Treiber ja in die Alarmanlage eingespielt werden. Und da, aus gutem Grund, diese Anlagen so fehlerfrei wie möglich laufen sollen macht es keinen Sinn einen Treiber zu verwenden.
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:

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?
Du brauchst ein "Nullmodem-Kabel" sprich ein einfaches Kabel wo die Sende und Empfangsleitung gekreuzt sind.

UweR 10. Aug 2004 08:41

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.

Mibu 6. Sep 2004 10:09

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 http://www.toolbox-mag.de/ findest Du eine Komponente Namens TSerial. Die verwende ich in vielen Projekten. Die Komponente hat ein Ereignis OnEventChar(). Das wird ausgelöst, wenn das als EventChar definierte Zeichen empfangen wird (hier also CR)
Im Ergebnis erhälst du eine komplette Zeile als String.


Beste Grüße
Michael


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