Forum: Mikrocontroller und Digitale Elektronik Ausgabe an seriellen Drucker mitschreiben


von Karl-Alfred Römer (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Gerät, mit dem ich über ein spezielles serielles
Kabel in einen Stinknormalen seriellen Drucker (Epson LX300)
die enthaltenen Daten als ASCII-Zeichen ausdrucken kann.

Das Kabel ist insofern speziell, dass gegenüber einem normalen
9 poligen Kabel ein paar Adern intern vertauscht sind.

Es scheint keine kommunikation zwischen Drucker und dem Gerät zu
geben, denn wenn ich den Drucker während des Druckens ausschalte
macht das Gerät bei seiner Datenausgabe ungestört weiter. Keine
Fehlermeldung usw. Beim Wiedereinschalten des Druckers wird einfach
da weitergedruckt, wo der Drucker abhängig von der Ausschaltzeit
jetzt drann wäre. Ebenso kann ich das Gerät zum drucken bewegen,
ohne, dass ein Drucker hinten drann hängen würde. Das Gerät merkt
das scheinbar gar nicht.

Es ist also quasi ein Monolog des Gerätes.
Die Datenmenge beträgt immer ca. 1-2 DIN-A4 Seiten ASCII-Code.

Nun würde ich die ausgegebenen Daten gerne auf einen PC ausgeben
lassen. Also den PC anstelle des Druckers anhängen und mit einer
Software dann die Daten auswerten.  Müßte ich dann das spezielle
serielle Kabel des Gerätes über ein Nullmodemkabel am PC anschließen?

Gibt es fertige PC-Software, die die ASCII-Zeichenfolgen einließt?
Oder hat jemand Visual-Basic-Code, der das für mich macht?

Danke für Eure Hilfe und viele Grüße

Karl

von xxx (Gast)


Lesenswert?

Ja Hyperterminal z.B.

von Marco (Gast)


Lesenswert?

HTerm ist auch ein hervorragendes Programm für solche Zwecke.
http://www.der-hammer.info/terminal/index.htm

von Karl-Alfred Römer (Gast)


Lesenswert?

Danke schon mal:-)

Habe es zuerst mal mit Hyperterminal probiert.
Zunächst gab es mal Datensalat. Nachdem ich die Parameter
der COM-Schnittstelle korrekt erraten hatte, kamen dann auch
auf den ersten Blick die richtigen Daten auf den Bildschirm.
Beim genaueren Hinsehen ist mir dann aber aufgefallen,
dass Teile des Textes einfach unterschlagen werden.
Außerdem habe ich keine Funktion gefunden, wie ich die
empfangenen Daten zur Weiterverarbeitung zwischenspeichern
kann.

Was ich überhaupt nicht verstehen kann:
Ich habe versuchsweise noch eine Connection mit den gleichen
Parametern (mehrfach verglichen) wie oben angelegt.
Mit der neuen Connection ist Hyperterminal immer abgestürzt,
sobald das Gerät Daten gesendet hat.
Nach Neustart von Hyperterminal und laden der ersten Connection
hat es wieder prima funktioniert. (abgesehen von den oben genannten
Problemen)


Dann habe ich es mit HTerm probiert.
Hterm verschluckt zwar keine Daten, dafür druckt es keine Umlaute
und zeigt mir so ziemlich alle Steuercodes an. (z.B.  \r)

Das gute daran ist aber, dass ich den eingelesenen Text abspeichern
und mit beliebigen Editoren öffnen kann.
Die Steuerzeichen werden hier durch leere Kästchen ersetzt.

Das ist aber nicht so schlimm, wie bei Hyperterminal, dass bei
mir Daten verschluckt hat.

Jetzt kann ich mir in VB was friemeln, was die Dateien auswertet.
Noch lieber wäre es mir natürlich, wenn ich die Daten direkt in
Visualbasic schicken könnte, damit ich nicht den Umweg über das
Termimalprogramm gehen muss.
Falls  jemand eine Lösung ein Beispiel Progrämmchen parat hätte...

von xxx (Gast)


Lesenswert?

Dann such dir mal im Netz einfach ein Beispiel wie du auf die
Schnittstellen zugreifen kannst. Das gibt es bestimmt 1000fach.

von Sven (Gast)


Lesenswert?

>>Beim genaueren Hinsehen ist mir dann aber aufgefallen,
dass Teile des Textes einfach unterschlagen werden.

Klingt, als würde der Empfangspuffer zu klein sein. Und da das Gerät
kein Handshake zu verwenden scheint, sendet es munter weiter, wen der
Puffer voll ist. Also ein Terminalprogramm mit einstellarem Buffer
verwenden. BrayTerm müßte das können, google mal danach...

Sven

von Karl-Alfred Römer (Gast)


Lesenswert?

Danke Sven.
Das wird es gewesen sein. HTerm hat scheinbar eine bessere Buffergröße
voreingestellt, so dass es damit prima funzt. Der Datenimport aus
der von HTerm erzeugten Textdatei in eine Access-Datenbank ist auch
schon fertig:-)

Nun fehlt nur noch die Möglichkeit, ein Terminalprogramm zu
umgehen, indem man von Access aus die Schnittstelle direkt abhört.
Dafür gibt es sogar ein kostenpflichtiges OCX von Microsoft, aber
ich hoffe immer noch, dass jemand sowas von Hand programmiert hat
oder irgendwo Beispielcode dafür herumliegen hat.

von Wolfram (Gast)


Lesenswert?

>>>Beim genaueren Hinsehen ist mir dann aber aufgefallen,
>dass Teile des Textes einfach unterschlagen werden.

Auch Hyperterminal kommt bei 115200 baud spielend mit!
Ich glaube nicht das dein Gerät schneller ist!?
Wenn da Zeichen oder Teile des Textes verschluckt werden und bei HTerm
nicht dann liegt es genau an diesen Steuerzeichen die dich so stören.
Einige davon bedeuten nämlich das das vorhergehende Zeichen gelöscht
werden soll(Backspace) oder die ganze Zeile etc.
Das du Probleme bei Hyperterm hast liegt daran dass du das falsche
Protokoll (ANSI,VT100 etc.) gewählt hast und die Zeichen
dementsprechend als Steuerzeichen interpretiert werden.
Wenn du also in VB "was friemelst" dann solltest du die Daten binär
einlesen sonst wird dir das gleiche passieren.

von Rahul (Gast)


Lesenswert?

das Ding von "Sehr klein und weich" nennt sich MSCOMM und ist bei
jeder VB-Version dabei. Dazu muß man nur die Library hinzufügen...
(Rechtsklick auf die Tools [auf der linken Seite, da wo auch
Command-Buutons und so auswählbar sind] und dann MSCOMM auswählen. Dann
einfach das Icon auf deine Form ziehen. Den Rest musst du dir dann nur
noch aus dem MSDN (Suchwort MSCOMM) heraussuchen.

von Michael S (Gast)


Lesenswert?

Zum Mitlesen auf der Seriellen ist SioCheck zu empfehlen.

Freundlichen Gruss
Michael S.

von Pete da Heat (Gast)


Lesenswert?

Direkter Zugriff auf die RS232 per Visual Basic (mit Code):
http://www.activevb.de/tutorials/tut_com/com.html

Pete

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.