-
Die vorliegende Erfindung betrifft
ein Peripheriegerät,
wie einen Drucker oder Scanner, das geeignet ist, um mit einem Hostgerät verbunden
zu werden und mit diesem zu kommunizieren, sowie ein Steuerungsverfahren
für das
Peripheriegerät.
-
Der Universal Serial Bus (nachfolgend
vereinfacht als „USB" bezeichnet) ist
eine Schnittstelle, um Peripheriegeräte, wie Drucker und Scanner,
und einen Host, wie z. B. einen Personalcomputer, miteinander zu
verbinden, um den Austausch von Nutz- und Steuerdaten zwischen den
Peripheriegeräten und
dem Host zu ermöglichen.
Der USB wird zusehends zur Standardschnittstelle, um solche Peripheriegeräte (nachfolgend
vereinfacht als „Gerät" bezeichnet) mit
Personalcomputern (nachfolgend vereinfacht als „PC" bezeichnet) zu verbinden.
-
Insbesondere ist USB ein Bus-Standard
für eine
serielle Kabelverbindung, die es einem PC ermöglicht, gleichzeitig auf zahlreiche
Geräte
mit einer hohen Datenzuverlässigkeit
zuzugreifen und auch ein „In-Betrieb-Auswechseln" ermöglicht,
das ist die Fähigkeit,
ein Gerät
in die USB-Kette einzufügen oder
es aus der USB-Kette zu entfernen, während der Host und/oder andere
Geräte
in Betrieb sind, ohne den Zugriff auf die Geräte, die an dem Bus verbleiben,
zu verlieren. Wegen dieser Kombination aus hoher Datenzuverlässigkeit
und Auswechselbarkeit im laufenden Betrieb wird erwartet, daß USB die
Industrie-Standardschnittstelle für PC-Peripherie-Anschlüsse wird.
-
Datenübertragungen zwischen Geräten mit USB-Schnittstellen
beginnen damit, daß der
Host ein Zeichenpaket zu einem Gerät sendet. Um gleichzeitigen
Zugriff auf mehrere Geräte
zu ermöglichen,
enthält
das Zeichenpaket eine eindeutige Geräteadresse und eine Endpunktinformation.
Die Geräteadresse legt
fest, welches Gerät
am USB angesprochen wird und die Endpunktinformation identifiziert
die Quelle der Daten oder der Datenübertragung, oder den Empfänger der
Daten oder den Verbraucher (Senke). Nach dem Zeichenpaket folgt
ein Datenpaket, das die zu übertragenden
Daten enthält
sowie ein Handshake-Paket, das den Übertragungsstatus anzeigt.
-
USB verwendet die folgenden vier Übertragungsarten
und überträgt Daten,
indem ein entsprechender logischer Kanal zwischen dem Host und dem
Gerät aufgebaut
wird.
- – Massenübertragungen
und der Massenübertragungskanal
werden verwendet, um relativ große Mengen an Daten, wie z.
B. Drucker- und Anzeigedaten zu übertragen;
- – Unterbrechungsübertragungen
und der Unterbrechungsübertragungskanal
werden für
kleine Datenmengen mit einer kurzen Gültigkeitsdauer verwendet;
- – Steuerübertragungen
und der Steuerübertragungskanal
werden verwendet, wenn ein Gerät erstmals
an den Bus angeschlossen wird, um das logische Vorhandensein des
Gerätes
einzustellen;
- – Isochron-Übertragungen
und der Isochron-Übertragungskanal
werden für
Audiodaten und andere Datentypen verwendet, die Daten erfordern,
die innerhalb bestimmter Zeitgrenzen geliefert werden müssen.
-
Einen Datenstrom in einem dieser Übertragungsverfahren
zu senden, wird als eine „Transaktion" bezeichnet und umfasst
die oben beschriebene Paketabfolge. Rahmen, die in 1 ms Intervallen
gesendet werden, enthalten eine Vielzahl von Transaktionen. Eine
gleichzeitige Kommunikation zwischen einem Host und mehreren Geräten wird
erreicht, indem diese Rahmen nacheinander gesendet werden. Das Handshake-Paket
bietet eine Wiederholungsfunktion für den Fall, daß ein Fehler
während
der Übertragung
auftritt. Dadurch wird es ermöglicht,
große
Datenmengen zuverlässig
mit hoher Geschwindigkeit zu übertragen.
-
Wenn das mit dem Host kommunizierende USB-Gerät beispielsweise
ein Drucker ist, enthalten die Daten, die zwischen dem Host und
dem Gerät übertragen
werden, Statusinformationen, die den Betriebsstatus des Druckers
anzeigen, zusätzlich
zu den Prozeßdaten
wie Bitmap-Daten oder anderen Druckdaten sowie Steuerbefehlen, um
den Druckvorgang zu steuern. Typische Statusinformationen umfassen
den Online- oder Offline-Status des Druckers, ob Papier vorhanden
ist, ob die Abdeckung geöffnet ist,
ob der Puffer gefüllt
ist, ob Tinte vorhanden ist und andere Fehlermeldungen. Die Statusinformation
wird normalerweise von dem Drucker an den Host als Antwort auf einen
Statusanforderungsbefehl mit Hilfe des gleichen Massen-Übertragungsverfahren
gesendet, mit dem auch Druck- und Befehlsdaten vom Host zum Drucker
gesandt werden.
-
Ein USB-Massenübertragungskanal wird jedoch
nur auf Anforderung geöffnet,
d. h. wenn (1) der Host Daten an das Gerät senden oder Daten von dem
Gerät empfangen
will und (2) die Buskapazität (Bandbreite),
die für
das Übertragen
der Daten innerhalb einer bestimmten Zeiteinheit benötigt wird,
verfügbar
ist. D. h., daß es
keinen Weg gibt, sicherzustellen, wann die Daten gesendet werden.
Dies bedeutet auch, daß Informationen
nicht sofort übertragen
werden können,
wenn die Statusinformation mit Hilfe eines Massenübertragungskanals übertragen werden
und dadurch vielfältige
Probleme auftreten können.
Z. B. kann der Host fortfahren, Prozeßdaten zu senden, selbst wenn
der Puffer gefüllt
ist und Daten somit verloren gehen können. Der Host könnte auch
fortfahren, Daten zu senden, wenn die Druckerabdeckung geöffnet ist,
und folglich könnten
Druckverzögerungen
auftreten.
-
Der Unterbrechungsübertragungskanal
wird andererseits periodisch in regelmäßigen kurzen Intervallen geöffnet und
ermöglicht
einem Gerät,
Daten an einen Host sofort zu senden, falls Daten beim Aufrufen
des Gerätes
gesendet werden sollen. Dem Unterbrechungsübertragungskanal wird somit
die höchste
Priorität
eingeräumt,
um gute Echtzeitleistungsfähigkeit
zu erreichen. Die Datenzuverlässigkeit ist
auch deswegen extrem hoch, weil die Übertragung bei der nächsten Periode
erneut versucht wird, falls ein Busfehler auftritt und eine Transaktion
verloren geht. Es ist daher möglich,
Statusinformationen als Unterbrechungsübertragungstyp zu senden und dadurch
Unmittelbarkeit und Datenzuverlässigkeit
zu gewährleisten.
-
Jedoch ist die Größe der Datenpakete, die durch
die Unterbrechungsübertragung
gesendet werden können,
begrenzt, um die Bandbreitenverfügbarkeit
sicher zustellen. Es ist auch vorzuziehen, Bandbreite für Massenübertragungen
zu reservieren, um eine annehmbare Übertragungsgeschwindigkeit
der Prozeßdaten
zu gewährleisten.
Als ein Ergebnis ist es auch wünschenswert,
die Datenübertragungen mit
Hilfe des Unterbrechungsübertragungskanals
zu begrenzen.
-
Aufgabe dieser Erfindung ist es demzufolge, ein
Peripheriegerät
und ein Steuerungsverfahren dafür
so auszugestalten, daß die
Unmittelbarkeit der Übertragung
der Statusinformation sichergestellt werden kann, daß eine ausreichende
Bandbreite für eine
effiziente Übertragung
von Prozeßdaten
und Befehlen garantiert werden kann und daß eine hohe Datenrate gewährleistet
werden kann.
-
Diese Aufgabe wird durch ein Gerät nach Anspruch
1, ein Verfahren nach Anspruch 5 und ein Speichermedium nach Anspruch
9 gelöst.
Bevorzugte Ausführungsformen
dieser Erfindung sind Gegenstand der abhängigen Ansprüche.
-
Um die oben genannte Aufgabe zu lösen, bietet
ein Peripheriegerät
gemäß der vorliegenden Erfindung
eine unverzügliche
Antwort nahezu in Echtzeit, während
die verfügbare
Bandbreite für
solche Übertragungen,
wie die Massenübertragung
des USB maximiert wird, indem Statusinformationen entweder mit Hilfe
eines ersten Übertragungsmodus,
z. B. über
einen Massenübertragungskanal
des USB, oder mit Hilfe eines zweiten Übertragungsmodus, z. B. über einen
Unterbrechungsübertragungskanal
des USB, übertragen
werden, statt einfach nur die gesamten Statusinformationen entweder
mittels des ersten oder des zweiten Übertragungsverfahren zu senden.
Die Entscheidung zwischen diesen beiden Übertragungsmodi wird abhängig vom
Typ der Statusinformation oder vom Grund der Übertragung der Statusinformation
getroffen.
-
Die meisten Fälle, in denen Statusinformationen
als Antwort auf eine Anforderung des Hosts gesendet werden, sind
Fälle,
in denen der nächste
Ablaufschritt ausgeführt
wird, nachdem die angeforderte Statusinformation vom Host bestätigt wurde
und eine unverzügliche
Antwort nicht notwendig ist. Falls die angeforderte Statusinformation
dringend benötigt wird,
weiß der
Host, daß die
Statusinformation unverzüglich
benötigt
wird und kann daher die benötigte Statusinformation über den
ersten Übertragungsmodus,
im Falle des USB den Massenübertragungskanal,
in der angemessenen Zeit erhalten.
-
Auf der anderen Seite weiß der Host
aber nicht, wann Statusinformationen automatisch vom Peripheriegerät generiert
werden, und diese selbstständigen
Statusinformationen sind deshalb dringend. Die Dringlichkeit und
die rechtzeitige Übertragung
solcher selbstständiger
Statusinformationen können
in diesem Fall dadurch sichergestellt werden, daß sie mittels des zweiten Übertragungsmodus
zum Host gesendet werden, im Falle des USB des Unterbrechungsübertragungskanals.
-
Wenn die Statusinformation somit
durch eine Schnittstelle übertragen
wird, die mindestens zwei verschiedene Übertragungskanäle nutzt,
wie es bei USB der Fall ist, übertragen
ein Peripheriegerät
und ein Peripheriegerätesteuerungsverfahren
gemäß dieser
Erfindung nur die Statusinformation mit der größten Dringlichkeit (Unmittelbarkeit)
in dem zweiten Übertragungsmodus,
das ist der Übertra gungsmodus,
der über
die kürzeste
Reaktionszeit verfügt (z.
B. über
den USB-Unterbrechungsübertragungskanal),
während
sie den ersten Übertragungsmodus (z.
B. über
den USB-Massenübertragungskanal)
benutzen, um die Informationen in allen anderen Fällen zu
senden.
-
Es ist deshalb möglich, Statusinformationen in
einem Übertragungsmodus
in Abhängigkeit
von der Unmittelbarkeit der Information zu übertragen, um so Statusinformationen
zu übertragen,
ohne unnötig
USB-Bandbreite zu blockieren und trotzdem die notwendige Übertragungsgeschwindigkeit
für die Prozeßdaten sicherzustellen,
indem der Massenübertragungskanal
benutzt wird.
-
Es ist gleichermaßen möglich, die Unmittelbarkeit
der Statusinformationen zufriedenstellend zu gewährleisten, ohne die Leistung
eines Peripheriegerätes
zu beeinträchtigen,
das eine Verarbeitungseinheit wie einen Druckmechanismus oder einen
Lesemechanismus zur Ausgabe oder zur Aufnahme von Daten von einer
externen Quelle und eine Steuerung aufweist, um durch die Verarbeitungseinheit
verarbeitete Prozeßdaten
in dem ersten Übertragungsmodus
zu senden oder zu empfangen.
-
Andere Aufgaben und Vorteile zusammen mit
einem umfassenderen Verständnis
der Erfindung werden offensichtlich und klarer, durch den Verweis auf
die nachfolgende Beschreibung der bevorzugten Ausführungsformen
in Zusammenhang mit den beigefügten
Zeichnungen, in denen:
-
1 ein
Blockdiagramm des POS-Systems gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung darstellt;
-
2 ein
typisches Blockdiagramm eines Druckers ist, der in 1 dargestellt, ist;
-
3 eine
typische USB-Paket-Struktur zeigt wobei (a) ein Zeichenpaket, (b)
ein Datenpaket und (c) ein Handshake-Paket zeigen;
-
4 die
typische USB-Rahmenstruktur zeigt; und
-
5 ein
Ablaufdiagramm des grundlegenden Statusinformations-Übertragungsverfahrens
des in 1 dargestellten
Druckers zeigt.
-
1 ist
ein Blockdiagramm eines typischen POS-Systems 11 (das ein
Beispiel eines Datenübertragungssystems
darstellt), bei dem (Peripherie-)Geräte gemäß der vorliegenden Erfindung
untereinander sowie mit einem Host über USB-Schnittstellen verbunden
sind. Wie in 1 dargestellt,
umfasst das beispielhafte POS-System 11 einen Drucker 15, einen
Kundenbildschirm 16, einen Kartenleser 17 und
einen Barcodeleser 18, die mit einem Personalcomputer-Host 12 über einen
Hub 13 verbunden sind. Der Drucker 15, der Kundenbildschirm 16,
der Kartenleser 17 und der Barcodeleser 18 weisen
jeweils eine USB-Schnittstelle 14 auf, die die Datenübertragung über den
USB zum Host 12 ermöglicht.
-
Eine bevorzugte Ausführungsform
dieser Erfindung wird mit dem Drucker 15 als Beispiel für jedes beliebige
anschließbare
Gerät nachfolgend
beschrieben. Die typische Zusammensetzung des Druckers 15 in
dieser bevorzugten Ausführungsform
ist weiter unten beschrieben mit Bezug auf das Blockdiagramm in 2. Dieser Drucker 15 umfasst
einen Druckmechanismus 31 zum Drucken und eine programmgesteuerte
Steuerungseinrichtung 32, um den Druckmechanismus 31 zu
steuern. Die Steuerungseinrichtung 32 beinhaltet typischerweise
eine CPU, ein ROM, um die Programmdaten und/oder vielfältigen Druckereinstellungen
zu speichern, und ein RAM als Arbeitsspeicher für die Druckdaten und die Steuerbefehle.
Die CPU, ROM und RAM sind in den Figuren nicht gezeigt.
-
Die USB-Schnittstelle 14 ist
mit der Steuerungseinrichtung 32 über einen Client-Treiber 33 verbunden.
Die USB-Schnittstelle 14 umfaßt einen Anschluss 21,
einen Universalcontroller 22 und einen USB-Treiber 23.
Der Anschluss 21 bildet die Hardwareverbindungsumgebung
der USB-Schnittstelle. Der Universalcontroller 22 ist für die Hardwaresteuerung
der Kommunikation über
den Anschluss 21 zuständig,
z. B. um Signalleitungen in einer vorgegebenen Reihenfolge anzusteuern.
Der USB-Treiber 23 ist
für die
Softwaresteuerung der Kommunikation zuständig, z. B. um die Übertragungsdaten
in Pakete zu packen. Der USB-Treiber 23 umfaßt eine
CPU, ein ROM, um das Programm zu speichern, daß die CPU steuert, und ein
RAM als Arbeitsspeicher. Die Steuerungseinrichtung 32 empfängt somit
Druckdaten und Steuerbefehle vom Host 12 über den
Client-Treiber 33 und den USB-Treiber 23. Zu beachten
ist, daß der Client-Treiber
als Software ausgeführt
ist, die auf Hardware läuft
welche in der Steuerungseinrichtung 32 enthalten ist.
-
Der USB-Treiber 23 umfasst
eine erste Übertragungseinheit 24 für einen
Massenübertragungskanal,
eine zweite Übertragungseinheit 25 für einen
Unterbrechungsübertragungskanal,
eine dritte Übertragungseinheit 26 für einen
Steuerungsübertragungskanal
und eine vierte Übertragungseinheit 27 für einen
Isochron-Übertragungskanal.
Diese Übertragungskanäle werden
von einem Zeichenpaket 51 geöffnet, das vom Host 12 gesendet
wird. Wie in 3 dargestellt,
beinhaltet dieses Zeichenpaket: eine Paket-ID (PID) 61,
die den Pakettyp anzeigt, d. h., ob der Host die Daten in dem Datenpaket
sendet oder empfängt;
eine Adresse 62, um ein spezielles Gerät auf dem USB zu identifizieren;
einen Endpunkt 63, der das Ziel in dem Gerät angibt,
wo die Daten gebraucht werden oder woher sie kommen, sowie einen zyklischen
Redundanz-Code (CRC) 64 für die Fehlerkontrolle.
-
Durch die Angabe der Adresse und
des Endpunktes in dem Zeichenpaket sowie das Zuordnen eines Gerätes zu jedem
Kanal, können
die Daten zwischen dem Host 12 und mehreren Geräten, die
die USB-Schnittstelle nutzen, im wesentlichen gleichzeitig übermittelt
werden. Die Datenübertragung
findet in Einheiten von Rahmen statt, wobei jeder Rahmen mehrere Übertragungskanäle enthält. Die
Art und Weise, wie Transaktionen auf diesen Kanälen stattfinden, wird im folgenden
beschrieben:
Wenn der Host 12 Daten zu einem Gerät senden
will, sendet er von seiner USB-Schnittstelle 14 ein Zeichenpaket 51,
das eine PID 61 beinhaltet, die anzeigt, daß der Host
sendet; die Adresse 62 des Geräts zu dem der Host 12 die
Daten sendet (in diesem Beispiel ist es die Adresse des Druckers 15)
und einen Endpunkt 63, der das Ziel der Daten in dem adressierten
Gerät anzeigt,
in diesem Beispiel die Steuerungseinrichtung 32. Die USB-Schnittstelle 14 des
Druckers 15 entschlüsselt
dann die Information in dem Zeichenpaket 51. Wenn die Adresse 62 die Adresse
(Nummer) ist, die dem Drucker 15 zugewiesen wurde, und
der Endpunkt 63 in dem Zeichenpaket 51 die Steuerungseinrichtung 32 des
Druckers 15 bezeichnet, dann akzeptiert der Drucker 15 das
Zeichenpaket 51 und das Datenpaket 52, das dem
Zeichenpaket 51 folgt. Ein Datenpaket 52 enthält eine PID 61,
die Daten 65 und einen CRC 64.
-
Wenn der Host 12 Daten eines
Gerätes
empfangen will, z. B. vom dem Drucker 15, dann sendet der
Host 12 ein Zeichenpaket 51 zum Drucker 15, das
eine PID 61 enthält,
die anzeigt, daß die
Daten gesendet werden können
(nachfolgend „IN-Zeichen" genannt). Wenn dieses
IN-Zeichen vom USB-Treiber 23 empfangen
wird, sendet er die Ausgabedaten, die von der Steuerungseinrichtung 32 bereitgestellt
wurden.
-
Daher kann das vom Host benutzte
Zeichenpaket 51, um eine Kommunikation mit einem Gerät herzustellen,
als Eingabe/Ausgabe-Befehl betrachtet werden, der das Gerät anweist,
Daten vom Host zu empfangen (Eingabe) oder Daten an den Host zu senden
(Ausgabe).
-
Wenn das Senden oder Empfangen des
Datenpaketes 52 beendet ist, wird ein Handshake-Paket 53 ausgetauscht.
Das Handshake-Paket 53 beinhaltet nur eine PID 61,
die es ermöglicht,
daß einer der
drei Zustände
zurückgesendet
wird: ACK, zur Bestätigung,
daß die
Daten fehlerfrei empfangen wurden, NAK, zur Angabe, daß die Daten
nicht empfangen wurden; und STALL, zur Angabe, daß die empfangende
Seite unterbrochen hat (z. B. daß die Datenübertragung aufgrund eines Fehlers
nicht möglich war).
Wenn der Host 12 NAK in dem Handshake-Paket 53 erkennt,
ist es möglich,
das gleiche Datenpaket 52 erneut zu senden und somit die
Funktionssicherheit des Datenübertragung
zu erhöhen.
Wenn STALL erkannt wird, dann kann der Host versuchen, den Grund
für den
Abbruch durch das Gerät
herauszufinden.
-
Wie 4 zeigt, überträgt der Host 12 Daten in
Rahmen F in einem Abstand von 1 ms, wobei es sich um die Rahmenperiode
bzw. -dauer des USB-Standards handelt (USB Time). Ein Rahmen F beginnt
mit dem "Start eines
Rahmens" (SOF) Zeichen 54.
Auf das SOF Zeichen 54 folgen Unterbrechungsübertragungs-Transaktionen 55,
falls vorhanden. Die Unterbrechungsübertragungszeit kann für jedes
Gerät festgelegt
werden. Falls sie auf die kürzest
mögliche
Zeit für
jedes Gerät
eingestellt ist, wird eine Unterbrechungsübertragungs-Transaktion 55 für jedes
Gerät eingefügt (vier
Geräte
in dem beschrieben Beispiel) und, wenn der Rahmen F noch über ausreichend
Platz verfügt,
wird eine Massenübertragungs-Transaktion 56 eingefügt. Falls
die Daten eine isochrone Übertragung
benötigen,
folgt eine Ischronübertragungs-Transaktion
mit Hilfe der Unterbrechungsübertragungs-Transaktion 55.
-
Bei einer Unterbrechungsübertragungs-Transaktion 55 werden
Pakete auf die gleiche Art und Weise ausgetauscht wie oben für die Massenübertragungs-Transaktion
beschrieben. Dabei geschieht folgendes: Vom Host 12 wird
zuerst ein IN-Zeichen 51 ausgegeben und, falls ein Gerät Daten als
Antwort auf das IN-Zeichen 51 zu versenden hat, werden
diese sofort in ein Datenpaket 52 verpackt und gesendet.
Der Host antwortet mit einem Handshake-Paket 53, woran
das Gerät
erkennt, ob die Daten fehlerfrei empfangen wurden. Falls keine Daten zum
Versenden vorliegen, antwortet das Gerät dem Host 12 mit
einem NAK Handshake-Paket 53 und der Host 12 gibt
dann den Unterbre chungsübertragungskanal
frei, der für
dieses Gerät
geöffnet
war. Das Ergebnis ist, daß jedes
Gerät im
Takt der Rahmenperiode durch eine Unterbrechungsübertragungs-Transaktion 55 aufgerufen
wird, wenn die Aufrufperiode die kürzeste ist, und somit unverzüglich beliebige
Daten versenden kann, die der Host 12 benötigt.
-
Bezugnehmend auf 2, empfängt ein Drucker 15 gemäß der bevorzugten
Ausführungsform
Druckerdaten sowie Steuerbefehle vom Host und sendet Statusinformationen,
die den Druckerstatus anzeigen, über
die USB-Schnittstelle 14 an den Host 12. Statusinformationen,
die durch die Steuerungseinrichtung 32 ermittelt wurden,
werden an den Client-Treiber 33 weitergeleitet, und mittels
der USB-Schnittstelle 14 zu geeigneter Zeit an den Host 12 gesandt.
-
Von den vier Kanälen, die von der USB-Schnittstelle
benutzt werden und oben beschrieben wurden, kann man sich vorstellen,
Statusinformation über
jeden der folgenden drei zu übertragen:
Massenübertragung,
Unterbrechungsübertragung
und Isochron-Übertragung.
-
Ein bestimmter Teil der USB-Bandbreite (Rahmen)
ist für
die Isochron-Übertragung
reserviert, um die Verzögerung
so gering wie möglich
zu halten und den Isochronismus zu gewährleisten. Ein erneuter Versand
der Daten wird aber nicht versucht, selbst wenn die Daten verloren
gehen. Die Datenzuverlässigkeit
ist deshalb nicht groß.
Der Isochron-Übertragungskanal
ist deshalb für
den Versand von Statusinformationen nicht geeignet.
-
Der Massenübertragungskanal ist gut geeignet
für die Übertragung
großer
Datenmengen, kann aber nur geöffnet
werden, wenn ausreichend USB-Bandbreite zur Verfügung steht. Die Datenübertragungsgeschwindigkeit
und die Zeitsteuerung sind deshalb nicht garantiert. Die Datenzuverlässigkeit
ist hingegen hoch, weil der Datenempfang durch das Handshake-Paket
bestätigt
wird und im Falle eines Datenverlustes ein erneutes Senden der Daten
mit der nächsten
Massenübertragung
versucht wird.
-
Wenn die Unterbrechungsübertragungszeit auf
das kürzest
mögliche
Intervall für
das jeweilige Gerät
eingestellt ist, dann wird dieses Gerät mit jedem Rahmen F abgefragt.
Daten können
damit im wesentlichen unverzüglich
vom Gerät
zum Host 12 gesandt werden. Das Gerät versucht ebenfalls erneut
im nächsten
Zeitabschnitt zu senden, falls Daten verloren gegangen sind. Die
Datenzuverlässigkeit
ist deshalb hoch. Es soll jedoch angemerkt werden, daß der USB-Standard
dem periodischen Zugriff, wie der Unterbrechungsübertragung und der Isochron-Übertragung,
Priorität
einräumt.
Das bedeutet, daß in
dem Falle, daß die
Bandbreite, die einer Unterbrechungsübertragung zugewiesen wird,
zuviel von Rahmen F belegt, es nicht mehr möglich ist, ausreichend Bandbreite
für Massenübertragungs-Transaktionen
bereitzustellen. Die Übertragungsgeschwindigkeit
von Druckdaten kann deshalb sinken.
-
Der Client-Treiber 33 in
dem Beispieldrucker 15 ist deshalb so ausgelegt, daß er wahlweise
entweder den Massenübertragungsmodus
oder den Unterbrechungsübertragungsmodus
nutzt. Man kann sich den Client-Treiber 33 somit als zwei
verschiedene Übertragungsmittel
oder -funktionen enthaltend vorstellen: eine erste Übertragungsfunktion
34, um Statusinformationen im Massenüber tragungsmodus zu senden,
d. h. als Antwort auf einen On-Demand-Eingabe/Ausgabe-Befehl vom
Host, und eine zweite Übertragungsfunktion 35,
um Statusinformationen im Unterbrechungsübertragungsmodus zu senden,
d. h. ein regelmäßiger Eingabe/Ausgabe-Befehl
des Hosts. Statusinformationen werden einem bestimmten Übertragungsmodus
(Kanal) zur Übertragung
zu dem Host 12 zugeordnet, abhängig von vom Typ der Information.
Folglich ermöglicht
dies sowohl eine unverzügliche Übertragung
von Statusinformationen, falls nötig,
als auch die Sicherstellung einer ausreichenden Bandbreite für Massenübertragungen.
-
Es gibt drei Gründe (Ursachen), die den Drucker 15 veranlassen
können,
Statusinformationen an den Host 12 zu senden.
-
Erstens, der Drucker 15 sendet
Statusinformationen als Antwort auf einen Statusanforderungsbefehl,
d. h. einen Steuerbefehl des Hosts. Dieser Statusanforderungsbefehl
wird vorübergehend
zwischengespeichert und dann in der Eingangsreihenfolge verarbeitet,
in ähnlicher
Weise wie Druckdaten und andere normale Steuerbefehle. Statusinformation,
die als Antwort auf diesen Statusanforderungsbefehl gesendet werden,
haben deshalb eine relativ geringe Dringlichkeit und können deshalb
mittels Massenübertragungsmodus
gesendet werden, ohne Probleme zu verursachen. Außerdem erwartet
der Host 12 die Statusinformation vom Drucker 15,
weil der Statusanforderungsbefehl vom Host 12 an den Drucker 15 gesandt
wurde. Demzufolge kann der Host 12 nach Bedarf die Statusinformation
zum passenden Zeitpunkt anfordern, indem er die Adresse des Druckers 15 auswählt und
ein IN-Zeichen 51 sendet. Als Ergebnis nutzt der Beispieldrucker 15 den
Massenübertragungsmodus,
d. h. die erste Übertragungsfunktion 34 zur
Statusinformationsübertragung.
-
Zweitens, der Drucker sendet Statusinformationen
als Antwort auf einen Echtzeit-Statusanforderungsbefehl. Ein Echtzeitbefehl,
der vom Host 12 gesendet und vom Drucker 15 empfangen
wird, wird sofort verarbeitet, bevor bzw. anstatt daß er in
einem Puffer gespeichert wird. Echtzeitbefehle sind solche mit hoher
Dringlichkeit und werden vor anderen Befehlen und Druckdaten bevorzugt
verarbeitet. Es ist deshalb notwendig, daß der Drucker 15 Statusinformationen
zum Host 12 sobald als möglich sendet. Weil der Statusinformationsanforderungsbefehl
vom Host 12 kommt, kann dieser auch in diesem Fall jedoch
häufig
IN-Zeichen 51, mit dem Versuch Statusinformationen zu erhalten,
an den USB aussenden. Der Host 12 kann deshalb den Übertragungszeitpunkt
oder die -geschwindigkeit auch für
Statusinformationen beeinflussen, die von einem Gerät als Antwort
auf einen dringenden Echtzeit-Statusanforderungsbefehl gesandt wurden.
Als Ergebnis verwendet der Beispieldrucker 15 den Massenübertragungsmodus,
d. h. die erste Übertragungsfunktion 34,
auch für
Antworten auf Echtzeit-Statusanforderungsbefehle.
-
Drittens, der Drucker 15 stößt den Versand einer
Statusinformation an. Die Funktion, die den Statusinformationsversand
anstößt, wird „Auto Status
Back Funktion" (ASB)
genannt und ermöglicht dem
Drucker 15, automatisch bestimmte Statusinformationen zum
Host 12 zu senden, wenn vom Host 12 vorher festgelegte
Bedingungen eintreten (ein bestimmter Wechsel im Druckstatus).
-
Wenn zum Beispiel eine offene Druckerabdeckung
eine der vorher festgelegten Bedingungen ist, wird der Drucker eine
Statusinformation erzeugen und diese Statusinformation an den Host 12 senden, sobald
die Druckerabdeckung aus irgendwelchen Gründen geöffnet wird. Dieser Typ einer
Statusinformation kann zu einem nicht behebbaren Fehler, wie zum
Beispiel dem Verlust von Druckdaten, führen. Der Druck kann nicht
fortgesetzt werden, wenn während
des Druckens oder, während
Druckdaten vom Host 12 gesendet werden, z. B. die Druckerabdeckung
geöffnet
wird. Darum ist es notwendig, den Druckauftrag zu unterbrechen.
Wenn der Host dennoch weiterhin Druckdaten sendet, obwohl der Druckauftrag
unterbrochen ist, kann es zu einem Pufferüberlauf kommen, und Daten können verloren
gehen. Es ist deswegen vorzuziehen, daß der Drucker 15 selbstständig erstellte
Statusinformationen in Echtzeit an den Host 12 sendet. Überdies
hätte der Host 12 keine
Möglichkeit
festzustellen, ob eine solche selbstständige Statusinformation erstellt
ist, und könnte
demzufolge kein IN-Zeichen 51 zu geeigneter Zeit senden,
um die Statusinformation vom Drucker 15 abzurufen. Ein
Beispieldrucker 15 gemäß dieser bevorzugten
Ausführungsform
nutzt deshalb eine zweite Übertragungsfunktion 35,
um solche selbstständige
Statusinformationen über
den Unterbrechungsübertragungskanal
an den Host 12 zu senden. Wie oben beschrieben, wird über den
Unterbrechungsübertragungskanal
das Gerät
mit jedem Rahmen abgefragt, wenn diese auf den kürzesten möglichen Abstand eingestellt
sind, und der Drucker 15 kann dadurch solche Statusinformationen
nahezu in Echtzeit an den Host 12 senden.
-
5 zeigt
ein Ablaufdiagramm der wichtigsten Schritte in einem Prozeß, bei dem
der Beispieldrucker 15 Statusinformationen an den Host sendet.
-
Sobald der Ablauf startet und die
Steuerungseinrichtung 32 die Statusmeldung erstellt (Schritt 71),
wird in Schritt 72 entschieden, ob die Statusinformation
selbstständig
erstellt wurde, also ob die Statusinformation von der ASB-Funktion
erstellt wurde. Wenn das der Fall ist, wartet der Ablauf auf ein
IN-Zeichen für
eine Unterbrechungsübertragung
(Schritt 73). Auf die Erkennung eines solchen IN-Zeichens,
sofern ein Unterbrechungsüberragungskanal
aufgebaut wurde, wird die Statusinformation versandt (Schritt 74).
Wie oben beschrieben, kann die Unterbrechungsübertragungszeit auf die kürzeste mögliche Reaktionszeit,
in diesem Fall eine Rahmenlänge,
festgelegt werden. Mit einer solchen Einstellung besteht mit jedem
Rahmen die Möglichkeit,
Statusinformationen zu versenden, was praktisch heißt, daß die ASB
Statusinformation sofort, nachdem sie erstellt ist, an den Host
gesendet werden kann, d. h. in Echtzeit.
-
Wenn Schritt 72 jedoch zeigt,
daß die
Statusinformation nicht von der ASB-Funktion erstellt wurde, schreitet
der Ablauf zu Schritt 75 voran. Dieser wartet auf ein IN-Zeichen
für Massenübertragung. Auf
die Erkennung eines solchen IN-Zeichens und den Aufbau eines Massenübertragungskanals
wird die Statusinformation in Schritt 76 versandt.
-
Der Drucker 15, der eine
USB-Schnittstelle nutzt, um Statusinformationen an einen Host zu
senden, wie es bei der beispielhaften Ausführungsform der Fall ist, nutzt
somit einen Unterbrechungsübertragungskanal,
um selbstständig
erstellte (ASB-Funktion) Statusinformationen an den Host zu senden
und einen Massenübertragungskanal,
um Statusinformationen als Antwort auf Statusanforderungsbefehle des
Host zu senden. Dringende Statusinformationen, die vom Drucker selbstständig erstellt
werden und von deren Existenz im Moment ihrer Entstehung der Host
keine Möglichkeit
hat, Kenntnis zu erlangen, können
dadurch in Echtzeit vom Drucker an den Host gesandt werden. Auf den
anderen Seite können
Statusinformationen, die nicht eilig sind und deren Übertragungszeitpunkt
der Host festlegen kann, über
den Massenübertragungskanal
gesandt werden. Dadurch wird die Belastung des Unterbrechungsübertragungskanals
reduziert, eine Überlastung
der von Unterbrechungsübertragungen
belegten Brandbreite vermieden und eine ausreichende Bandbreite
für Massenübertragung
garantiert.
-
Es ist somit mittels der vorliegenden
Erfindung möglich,
einen Drucker und ein Druckersteuerungsverfahren zu schaffen, bei
denen die sofortige Echtzeit-Datenübertragung von Statusinformationen, eine
ausreichende Bandbreitenkapazität
sowie eine schnelle Datenübertragungsrate
sichergestellt werden können.
-
Das in 5 gezeigte
Ablaufdiagramm des Steuerungsverfahrens wird vorzugsweise als ein Steuerungsprogramm
ausgeführt,
das die CPU des Druckers steuert. Das Programm kann auf einer magnetischen
Diskette oder einem anderen maschinenlesbaren Speichermedium inklusive
CD-ROM gespeichert werden. Wenn es in den Drucker geladen wird,
führt der
Drucker das Programm aus und arbeitet dabei den oben beschriebenen
Ablauf ab. Das Laden eines solchen Programms vom Speichermedium,
in Abhängigkeit
vom Typ des Speichermediums, kann auf vielfältige bekannte Arten und Weisen
durch den Fachmann erfolgen.
-
Wie bereits erwähnt, ist der Drucker nur ein Beispiel
für ein
Gerät entsprechend
der Erfindung. Die Lehre der Erfindung kann auf verschiedene andere
Geräte
angewendet werden, die geeignet sind, mit einem Datenverarbeitungssystem
verbunden zu werden. Genauer gesagt, können der Ablauf und der Aufbau,
die oben für
den Drucker 15 beschrieben wurden, auch genutzt werden,
um Status- oder vergleichbare Informationen von einem anderen Gerät, wie z.
B. vom Kundenbildschirm 16, dem Kartenleser 17 oder dem
Barcodeleser 18, zu einem Host zu senden.
-
Für
Statusinformationen, die vom Host angefordert wurden, wurde oben
beschrieben, sie mittels des Massenübertragungsmodus zu versenden.
Aber es ist genauso möglich,
Statusinformationen als Antwort auf eilige Echtzeit-Statusbefehle
vom Host über den
Unterbrechungsübertragungsmodus
zu senden und nur Statusinformationen als Antwort auf normale (nicht
dringende) Statusanforderungsbefehle mit Hilfe des Massenübertragungsmodus
zu senden. Dieses Verfahren des Versendens von Statusinformationen
stellt bedeutend mehr Bandbreite für die Massenübertragung
zur Verfügung,
als sonst übrig
bliebe, wenn der Unterbrechungsübertragungskanal
genutzt würde,
um alle Statusinformationen zu versenden. Dazu sichert sie die Echtzeitübertragung
von Statusinformationen als Antwort auf Echtzeit-Statusanforderungsbefehle.
-
Der USB ist jedoch ein Bus, auf dem
sowohl die Sendezeitsteuerung als auch die Empfangszeitsteuerung
vom Host gesteuert wird. Selbst wenn der Massenübertragungsmodus für ein Gerät eingesetzt wird,
um Statusinformationen an den Host zu senden, ist es deshalb möglich, Statusinformationen
als Antwort auf Anforderung durch den Host zu geeigneter Zeit zu
senden. Der USB kann hierfür
optimal gesteuert werden, um die Unmittelbarkeit der Statusinformation
zu sichern und die Übertragungseffizienz für andere
Daten mit Hilfe eines Unterbrechungsübertragungskanals für das Versenden
von selbstständig
erstellten Statusinformationen, deren Zeitsteuerung nicht vom Host gesteuert
werden kann, und mit Hilfe eines Massenübertragungskanals für alle anderen
Statusinformationen, deren Zeitsteuerung vom Host gesteuert werden,
zu maximieren.
-
Wie aus der obigen Beschreibung offensichtlich
ist, können,
wann immer ein Host und ein Peripheriegerät über einen Bus mit einer Vielzahl
von Übertragungsmodi
für die
Kommunikation zwischen Host und den Peripheriegeräten verbunden
sind, die Struktur und das Verfahren der dargestellten Erfindung
so eingesetzt werden, daß Statusinformationen (oder
vergleichbare Informationen) zu dem Host entweder über den
ersten oder den zweiten Übertragungsmodus
gesendet werden, anhängig
davon, welcher Natur die zu sendenden Daten sind. Es ist selbstverständlich,
daß der
USB-Bus nur als ein Beispiel für
solch eine Bus-Verbindung zwischen einem Peripheriegerät und einem
Hostgerät
beschrieben ist.