Gerät an Com-Port ansprechen

Auswahl, Einrichtung und Betrieb von Rechnern und Komponenten bzgl. DOS
Antworten
pm4488

Gerät an Com-Port ansprechen

Beitrag von pm4488 »

Hallo,

ich möchte für ein Kassensystem ein Kundendisplay von Epson testweise über DOS ansprechen.

Konkret möchte ich die Steuerbefehle an das Display senden; die Befehle gibt es in HEX und Dezimalform.

Wie stelle ich es an, daß ich z.B. den Befehl "1B 40" (Initialisierung) an das Display sende?

Wenn ich es über die Funktion

"echo 1B 40 >COM1"

mache, erscheint der Befehl als Text im Display, es tut sich aber nichts an dem Verhalten des Displays.

Ich möchte z.B. das Display löschen oder den Cursor nach links/rechts bewegen.

Wie kann ich also diese primitiven Steuerbefehle an das Display senden, ohne daß der Befehl als Text auf der Anzeige erscheint, sondern einfach nur die Funktion ausgeführt wird?

Schonmal Danke!
Benutzeravatar
Shockwav3
DOS-Übermensch
Beiträge: 1379
Registriert: Mi 9. Mai 2007, 16:42
Wohnort: Berlin XBerg

Beitrag von Shockwav3 »

Handbuch lesen.

Mit echo (Textausgabe) in Kombination mit > (Umleitung) ist es logisch, dass das Display dies als einfachen Text erkennt. Versuch einfach mal das echo weg zu lassen oder such dir ein Programm mit dem du Befehle über die serielle Schnittstelle senden kannst (sofern es unter DOS nicht direkt geht, hab damit ehrlich gesagt nie mit seriellen Schnittstellen gearbeitet).
Hauptsystem: Asus VL/I-486SV2GX4, DX2 @ 66MHz, 1MB L2 Cache, 64MB RAM, 1GB CF HDD, Cirrus Logic 5428 VLB, ARGUS Prototype Rev. 02 #0, umschaltbarer Covox/DSS-DAC, 2x LPT, DOS 6.22 + Win 3.11
pm4488

Beitrag von pm4488 »

Im Handbuch ist leider nichts zu finden, es sind nur die Befehle aufgelistet.

Ich suche schon seit Tagen nach einem Programm um Befehle an den Port zu senden, konnte aber nichts geeignetes finden.

Ich hab bisher nur Terminalsoftware gefunden, aber die macht im Prinzip dasselbe wie der echo-Befehl oder Hyperterminal unter Windows.

Könnt ihr mir nicht eine Software empfehlen, die nur die reinen Steuerzeichen am Com-Port ausgibt?
elianda
DOS-Übermensch
Beiträge: 1147
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle
Kontaktdaten:

Beitrag von elianda »

Ganz simple Methode:
Mache eine Datei, in die Du die Steuerzeichen als Hex reinschreibst. Oeffne den COM Port mit den korrekten Einstellungen mit einem Terminal Programm und gehe in die Shell wobei der Port dabei offen gelassen wird.
Dann z.B.
copy test.dat COM1
bzw. wahlweise mit /B
pm4488

Beitrag von pm4488 »

Erstmal danke für die Antwort!

Kannst du mir das vielleicht etwas genauer erklärren, am besten Schritt für Schritt?

Ich hab folgendes probiert:

1. Mit DOS-Editor die Datei TEST.DAT erstellt mit dem Inhalt "1B1F" als Steuerzeichen.

2. Com-Port gesetzt mit mode com2:9600,1,8

3. Datei an port gesendet mit copy test.dat >com2:


Und wieder das gleiche Resultat: der Text wird im Display angezeigt, ansonsten passiert nichts.
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Muss man vielleicht vor dem Befehl noch ein Sonderzeichen senden, so dass der Befehl auch tatsächlich als solcher erkannt wird?
Denn so wie es aussieht, scheint das Display zumindest so komfortabel zu funktionieren, dass es die Texteingabe sofort ausgibt.
Aber es muss ja möglich sein, Befehle von Text unterscheiden zu können. Da diese nunmal im selben Format vorkommen, muss es eine Konvention geben, welche die Möglichkeit einer Unterscheidung gibt.
Es kann natürlich auch sein, dass das Display das generelle Format des String nicht erkennen kann und alternativ einfach nur den Text ausgibt.

Hast du vielleicht auch mal mit den Parameter für den COM-Port experimentiert, ob das Display eventuell einen etwas anderen Betriebsmodus benötigt?
pm4488

Beitrag von pm4488 »

Die Einstellungen des COM-Ports sind relativ egal, laut Anleitung ist fast alles zugelassen.

Es wird aber auch kein Sonderzeichen genannt, mitdem die Funktinen ausgelöst werden.

Zum Steuern werden
- Dazimale Daten
- Hexadezimaldaten
- Epson ESC/POS Befehle akzeptiert.

Die dezimalen Daten sollen in ASCII-Codierung gesendet werden.

Es muß doch einen Unterschied dazwischen geben, ob Steuerdaten oder Text gesendet wird, oder? Das Display muß wissen, ob eine Zahlenfolge als Text angezeigt werden soll oder nicht.

Hier ist die Anleitung zum Display:

https://www.dhtechnology.com.au/pdfs/cu ... MD110s.pdf

Die Befehle fangen an ab Seite 44.
Benutzeravatar
Shockwav3
DOS-Übermensch
Beiträge: 1379
Registriert: Mi 9. Mai 2007, 16:42
Wohnort: Berlin XBerg

Beitrag von Shockwav3 »

Ich hab die Anleitung jetzt nur überflogen, da ich PDFs chronisch ungerne am PC lese. Aber versuch mal den Befehl als "0x1B1F" zu schicken. Eben jenes 0x ist ein gängiges Steuerzeichen für Daten im Hex-Format (jedenfalls in vielen Programmiersprachen).
Hauptsystem: Asus VL/I-486SV2GX4, DX2 @ 66MHz, 1MB L2 Cache, 64MB RAM, 1GB CF HDD, Cirrus Logic 5428 VLB, ARGUS Prototype Rev. 02 #0, umschaltbarer Covox/DSS-DAC, 2x LPT, DOS 6.22 + Win 3.11
pm4488

Beitrag von pm4488 »

Leider hat das auch nicht funktioniert, der Befehl ist weiterhin als Klartext im Display zu lesen.

Aber so schwierig kann es doch nicht sein, in primitives Display anzusteuern?
Benutzeravatar
Jinsu
MemMaker-Benutzer
Beiträge: 79
Registriert: Di 8. Mär 2005, 11:14
Wohnort: NRW
Kontaktdaten:

Beitrag von Jinsu »

Hast du es mal mit dem ASCII-Format versucht?
In deinen Erläuterungen erzählst du nur von hex und dezimal, also weiss ich nicht, ob du den verbleibenden Code genutzt hast.
Antworten