-
Hintergrund
-
Elektronische
Drucker ermöglichen
es, dass Text und Graphik auf Papier oder ein anderes Medium gedruckt
wird. Der Text und die Graphik können Teil
eines Dokuments oder einer anderen Datei sein. Da sich Computernetze
stark vermehrt haben, wurde Hardware und Software entwickelt, um
es mehreren Computern zu ermöglichen,
zumindest einen Drucker gemeinschaftlich zu verwenden. Beispielsweise können mehrere
Clienten und ein Drucker an einen Netzserver angeschlossen sein,
der einen Druckertreiber aufweist. Der Druckertreiber handhabt Druckanforderungen
von den mehreren Clienten.
-
Leider
erzeugt eine Varianz bei den Betriebssystemen (BS), die auf den
Clienten und in der Hardware/Software unterschiedlicher Drucker
ausgeführt werden,
laufend Kompatibilitätsprobleme.
Somit ist das Einrichten eines Servers für die Verwendung mit einem
bestimmten Drucker und/oder Clienten nicht unbedingt notwendigerweise
anwendbar für
andere Drucker oder Clienten. Außerdem sind viele Server absichtlich „kopflos” (ohne
eine zweckgebundene menschliche Schnittstelle, wie z. B. einen Bildschirm, eine
Tastatur oder eine Maus), so dass eine Modifikation der Serverfunktionalität für unerfahrene
Nutzer schwierig ist.
-
Kurze Beschreibung der Zeichnungen
-
Für eine detaillierte
Beschreibung beispielhafter Ausführungsbeispiele
der Erfindung wird nun auf die beiliegenden Zeichnungen Bezug genommen.
Es zeigen:
-
1 stellt
einen Computer gemäß Ausführungsbeispielen
dar;
-
2 stellt
ein System gemäß Ausführungsbeispielen
dar;
-
3 stellt
ein Verfahren gemäß Ausführungsbeispielen
dar; und
-
4 stellt
ein weiteres Verfahren gemäß Ausführungsbeispielen
dar.
-
Notation und Nomenklatur
-
In
der folgenden Beschreibung und den Ansprüchen werden bestimmte Begriffe
verwendet, um bestimmte Systemkomponenten zu bezeichnen. Wie es
für einen
Fachmann auf diesem Gebiet klar ist, können Computerfirmen Komponenten
mit unterschiedlichen Namen bezeichnen. Dieses Dokument beabsichtigt
nicht, zwischen Komponenten zu unterscheiden, die sich zwar vom
Namen aber nicht von der Funktion her unterscheiden. In der folgenden
Erörterung
und in den Ansprüchen
werden die Begriffe „enthalten” und „umfassen” auf offene
Weise verwendet und sollten somit interpretiert werden als „enthalten,
aber nicht begrenzt auf ...”.
Außerdem
ist der Begriff „koppeln” oder „koppelt” so gedacht,
dass er entweder eine indirekte, eine direkte, eine optische oder eine
drahtlose elektrische Verbindung bedeutet. Falls somit ein erstes
Gerät mit
einem zweiten Gerät
koppelt, kann diese Verbindung durch eine direkte elektrische Verbindung,
durch ein indirekte elektrische Verbindung über andere Geräte und Verbindungen, durch
eine optische elektrische Verbindung oder durch eine drahtlose elektrische
Verbindung sein.
-
Detaillierte Beschreibung
-
Die
folgende Erörterung
bezieht sich auf verschiedene Ausführungsbeispiele der Erfindung.
Obwohl eines oder mehrere dieser Ausführungsbeispiele bevorzugt sein
können,
sollten hierin offenbarte Ausführungsbeispiele
nicht als den Schutzbereich der Offenbarung, einschließlich der
Ansprüche,
begrenzend interpretiert oder anderweitig verwendet werden. Außerdem wird
ein Fachmann auf diesem Gebiet verstehen, dass die folgende Beschreibung eine
breite Anwendung findet, und die Erörterung jedes Ausführungsbeispiels
ist nur darstellend für
dieses Ausführungsbeispiel
und soll den Schutzbereich der Offenbarung, einschließlich der
Ansprüche,
nicht auf dieses Ausführungsbeispiel
begrenzen.
-
Wie
es hierin offenbart ist, ermöglichen
es Ausführungsbeispiele
mehreren Clienten, einen Drucker durch ein Netz gemeinschaftlich
zu verwenden. Anders ausgedrückt,
der Drucker koppelt mit einem Server, der für mehrere Clienten zugreifbar
ist. Bei zumindest einigen Ausführungsbeispielen
ist ein „Druckertunnel” zwischen
den Clienten und dem Drucker vorgesehen. Wie der Begriff hierin
verwendet wird, ist ein Druckertunnel eine Kombination aus Hardware,
Firmware und/oder Software, die bewirkt, dass der Server zumindest
teilweise transparent wird bezüglich
des Druckens. In diesem Zustand arbeitet jeder Client, als ob der
Drucker lokal verbunden wäre.
Der Druckertunnel handhabt vorzugsweise Konflikte zwischen Druckanforderungen
von unterschiedlichen Clienten und ist kompatibel mit variierenden Clientbetriebssystemen,
Clientdruckertreibern und Druckern.
-
Mit
Bezugnahme auf die Zeichnungen und insbesondere auf 1 ist
ein Computer 101 gemäß Ausführungsbeispielen
der Offenbarung gezeigt. Der Computer 101 entspricht einem
Clientcomputer oder einem Servercomputer. Bei zumindest einigen
Ausführungsbeispielen
ist der Servercomputer ein kopfloser Server. Wie er hierin verwendet
wird, bezieht sich ein „kopfloser
Server” auf
eine Rechen- und/oder Speichervorrichtung ohne eine speziell zugewiesene menschliche
Schnittstelle, wie z. B. einen Bildschirm, eine Tastatur oder eine
Maus. Wie er gezeigt ist, umfasst der Computer 101 eine
Mehrzahl von zentralen Verarbeitungseinheiten (CPUs, CPU = central
processing unit) 102, 104, die mit einer Busbrückenvorrichtung
gekoppelt sind, die in der Computerindustrie normalerweise als eine „Northbridge” („Nord-Brücke”) 108 bezeichnet
wird. Die Northbridge 108 koppelt die CPUs 102, 104 mit
dem Systemspeicher 106 und anderen Komponenten des Computers 101.
Die Northbridge 108 hat einen wesentlichen Einfluss auf die
Leistungsfähigkeit
des Computers, da dieselbe die Geschwindigkeit definiert, mit der
Daten zwischen den CPUs 102, 104 und dem Systemspeicher 106 fließen.
-
Wie
es gezeigt ist, koppelt die Northbridge 108 mit einer Eingabe/Ausgabe-(Input/Output-, I/O-)Brücke 150 über eine „schnelle” serielle
Busverbindung (verglichen mit einer Vorläuferbusverbindung) die bei
einigen Ausfühungsbeispielen
acht serielle Kommunikationskanäle
(×8) umfasst.
Dieser Bus kann eine proprietäre
Chipsatzverbindung sein oder kann einem festgelegten Industriestandard
entsprechen, wie z. B. PCI-Express.
Bei zumindest einigen Ausführungsbeispielen
koppelt die I/O-Brücke 150 mit
PCI-Schlitzen 152, 154 über eine PCI-66/64-Kommunikationsschnittstelle.
Die PCI-Schlitze 152, 154 können konfiguriert
sein, um einfügbare/entfernbare
PCI-Karten zu unterstützen, die
die Funktionalität
des Computers 101 verbessern.
-
Die
Northbridge 108 koppelt auch mit einer I/O-Brücke 170 über eine
andere „schnelle” Busverbindung
(verglichen mit einer Vorläuferbusverbindung),
die bei einigen Ausführungsbeispielen
acht Kommunikationskanäle
(×8) aufweist.
Wie es gezeigt ist, koppelt die I/O-Brücke 170 mit einem
SCSI-Modul 160 (SCSI = small Computer system interface
= Kleincomputersystemschnittstelle) über einen PCI-Express-(PCI-E-)Kommunikationsbus.
Das SCSI-Modul 160 unterstützt mehrere Speicherplatten 162, 164, 166 basierend
auf einem SCSI-Kommunikationsprotokoll. Die I/O-Brücke 170 koppelt
auch mit einer Netzschnittstellenkarte (NIC; NIC = network interface
card) 124 über
einen PCI-E-Kommunikationsbus.
Die NIC 124 ermöglicht
es dem Computer 101, mit anderen Computern oder Netzgeräten zu kommunizieren,
basierend auf einem Netzkommunikati onsprotokoll, wie z. B. Ethernet
oder TCP/IP (TCP/IP = Transmission Control Protocol/Internet Protocol
= Übertragungssteuerungsprotokoll/Internetprotokoll). Die
I/O-Brücke 170 koppelt
auch mit PCI-E-Schlitzen 172 (z. B. über einen Kommunikationsbus,
der bei einigen Ausführungsbeispielen
vier Kommunikationskanäle
(×4) aufweist).
Die PCI-E-Schlitze sind konfiguriert, um einfügbare/entfernbare PCI-E-Karten
zu unterstützen,
die die Funktionalität
des Computers 101 verbessern. Fachleute auf diesem Gebiet
werden erkennen, dass die Breite der schnellen Busverbindungen sowie
PCI-E-Verbindungen für
Schlitze und Geräte
basierend auf der erwarteten Bandbreite der verbundenen Geräte gewählt werden.
Alternativ kann der unterstützte
Speicherplattenlaufwerkschnittstellenbus ein SATA-Bus (serieller
ATA-Bus) oder eine andere übliche
Massenspeicherdatenbusarchitektur sein. Andere Verbindungen sowie
andere Spurbreiten können
durch den Systementwickler gewählt
werden.
-
Wie
es gezeigt ist, koppelt die Northbridge 108 auch mit einer
Southbridge („Süd-Brücke”) 115 über eine
Vorläuferkommunikationsbusverbindung. Diese
Busverbindung kann eine proprietäre
Chipsatzverbindung sein oder kann einem festgelegten Industriestandard
entsprechen, wie z. B. PCI-Express. Bei zumindest einigen Ausführungsbeispielen umfasst
die Southbridge 115 eine USB-Hoststeuerung 116,
die mit USB-Peripheriegeräten
koppelt und dieselben unterstützt,
wie z. B. einer USB-Maus 117, einer USB-Tastatur 118 und
einem USB-Drucker 119. Fachleute auf diesem Gebiet werden
erkennen, dass diese Geräte
durch USB-Verbinder gekoppelt sein können und optional sind. Die
Southbridge 115 koppelt auch mit einem optischen Plattenlaufwerk 180 (z. B.
einem CD-ROM- oder DVD-ROM-Laufwerk) und unterstützt dasselbe. Die Southbridge 115 koppelt auch
mit einer Super-Eingabe/Ausgabe-(I/O-)Schnittstelle 174 über einen
LPC-Bus (LPC = lowpin-count = geringe Anschlusszahl). Die Super-I/O
(SIO) 124 koppelt mit und unterstützt einen Flash-ROM 176 sowie
ein Diskettenlaufwerk 190, eine Vorläufertastatur 192,
eine Vorläufermaus 194 und
UARTS (UART = Universal Asynchronous Receiver/Transmitter = universeller
synchroner-asynchroner Sender/Empfänger-Baustein) 196.
Wie die oben erwähnten
USB-Geräte
liefert die SIO 174 Schnittstellen, an die die aufgezählten Vorläufergeräte angeschlossen
werden können.
Das Vorliegen einer physikalischen Vorläufertastatur und -maus muss für den ordnungsgemäßen Betrieb
des Computers 101 nicht erforderlich sein.
-
Wie
es gezeigt ist, koppelt die Southbridge optional mit einer Videokarte 112 und
unterstützt
dieselbe, die optional mit einem Bildschirm 113 koppelt. Falls
der Computer 101 einem Client entspricht, könnten die
Videokarte 112 und der Bildschirm 113 enthalten
sein. Falls der Computer 101 einem Server entspricht, könnten die
Videokarte 112 und der Bildschirm 113 nicht enthalten
sein.
-
Die
Southbridge 115 koppelt auch mit einem Netzadapter 114 über einen
PCI-33/32-Kommunikationsbus
und unterstützt
denselben. Alternativ kann der Netzadapter 114 mit dem
Host gekoppelt sein über
eine andere geeignete Kommunikationsschnittstelle, wie z. B. PCI-Express,
PCI-X, 66/64, LPC oder dergleichen. Der Netzadapter 114 ermöglicht es
dem Computer 101, mit einem Drucker auf einem Netz zu kommunizieren.
-
Wie
es in 1 gezeigt ist speichert die USB-Hoststeuerung 116 der
Southbridge 115 einen USB-Stapel 126 mit einem
Druckertunnel 128. Der USB-Stapel 126 und/oder
der Druckertunnel 128 sind alternativ an einer anderen
Stelle des Computers 101 gespeichert. Der USB-Stapel 126 kann
in unterschiedliche Schichten aufgeteilt sein. Bei einigen Ausführungsbeispielen
enthält
eine untere USB-Stapelschicht den Hoststeuerungstreiber, der eine
allgemeine Schnittstelle zu der USB-Hoststeuerungshardware und ihren
Ablaufplanungseinrichtungen bereitstellt. Die untere USB-Stapelschicht
unterstützt
Funktionen, wie z. B. die Initialisierung der USB-Hoststeuerungshardware,
Ablaufplanung von Übertragungen
und Handhabung von abgeschlossenen und/oder fehlgeschlagenen Übertragungen.
Jeder Hoststeuerungstreiber implementiert eine virtuelle Zentralstation
(Hub), die Hardware-unabhängigen Zugriff
zu den Registern bereitstellt, die die USB-Tore des Computers 101 steuern.
-
Eine
mittlere USB-Stapelschicht handhabt Funktionen, wie z. B. USB-Geräteverbindung
und -trennung, Basis-Initialisierung von USB-Geräten, Treiberauswahl, USB-Kommunikationskanäle und Ressourcenverwaltung.
Diese mittlere USB-Stapelschicht steuert auch die Standardkanäle und USB-Geräteanforderungen,
die über
die Standardkanäle übertragen
werden.
-
Eine
obere USB-Stapelschicht enthält
einzelne Treiber, die spezifische Geräte oder Klassen von Geräten unterstützen. Die
obere USB-Stapelschicht unterstützt
Protokolle, die für
Nicht-Standard-Kommunikationskanäle
verwendet werden. Die obere USB-Stapelschicht fügt auch Funktionalität hinzu,
um USB-Geräte
für das
Betriebssystem oder andere Komponenten des Computers 101 verfügbar zu
machen. Bei einigen Ausführungsbeispielen
verlässt
sich die obere USB-Stapelschicht auf eine USB-Treiberschnittstelle
(USBDI; USBDI = USB driver interface), die durch die mittlere USB-Stapelschicht
freigelegt wird. Bei zumindest einigen Ausführungsbeispielen ist der Druckertunnel 128 Teil
der unteren USB-Stapelschicht.
-
Der
Zweckmäßigkeit
halber wird der Druckertunnel 128 beim Beschreiben von
Ausführungsbeispielen
hierin manchmal so beschrieben, dass derselbe ein Clientende und
ein Serverende aufweist. Außerdem
ist der Druckertunnel 128 hierin manchmal so beschrieben,
dass derselbe einen Druckertunnelverwalter aufweist. Bei zumindest
einigen Ausführungsbeispielen
handhabt der Druckertunnelverwalter Konflikte zwischen überlappenden Druckanforderungen.
Der Druckertunnelverwalter leitet auch Druckerstatusbenachrichtigungen
oder Druckerausnahmen an zumindest einige der Clienten weiter. Bei
einigen Ausführungsbeispielen
arbeitet der Druckertunnelverwalter am Serverende des Druckertunnels 128.
Bei alternativen Ausführungsbeispielen
arbeitet der Druckertunnelverwalter an dem Clientende des Druckertunnels 128 oder
einer Kombination aus Clientende und Serverende des Druckertunnels 128.
Unabhängig
von der Position des Druckertunnelverwalters können die Schritte des Druckertunnelverwalters
durch das Clientende oder das Serverende des Druckertunnels 128 unterstützt werden.
-
Falls
der Computer 101 einem Client entspricht, ist das Clientende
des Druckertunnels 128 für mehrere Funktionen verantwortlich,
einschließlich selektive
Emulation eines USB-Druckers.
Anders ausgedrückt,
eine solche Emulation sollte bewirken, dass jeder Client in der
Lage ist, Daten, die von einem Drucker in einem Netz empfangen werden,
zu empfangen und zu erkennen, als ob sie von einem lokal verbundenen
USB-Drucker empfangen werden. Die USB-Treiber, die durch den Computer 101 implementiert
werden, um Daten von einem emulierten USB-Drucker zu interpretieren,
sind mit bestehenden USB-Protokollen
kompatibel (d. h. Entwerfen und Installieren neuer Druckertreiber
zum Senden von Daten an und Empfangen von Daten von dem entfernten
Drucker ist unnötig).
-
Bei
zumindest einigen Ausführungsbeispielen
bildet das Clientende oder das Serverende des Druckertunnels 128 eine
Schnittstelle mit einem Kommunikationsbus, der sich von den seriellen
Kommunikationsverbindungen unterscheidet, die in den USB-Protokollspezifikationen
beschrieben sind (z. B. kann der Kommunikationsbus auf einem PCI-Protokoll
(PCI = Peripheral Component Interconnect = Peripheriekomponentenverbindung)
oder einem anderen Protokoll basieren). In solch einem Fall ist
das Clientende oder das Serverende des Druckertunnels 128 in
der Lage, Daten von einem Protokoll zu dem anderen und umgekehrt
umzuwandeln.
-
Bei
zumindest einigen Ausführungsbeispielen
versorgt das Clientende des Druckertunnels 128 das Hostbetriebssystem
mit „Heiß-Einsteck-”(hot plugging)Ereignissen über UHCI-Register (UHCI = Universal
Host Controller Interface = universelle Hoststeuerungsschnittstelle),
wie z. B. Torstatus- und Steuerregister „PORTSC1” und „PORTSC2”. In einer realen UHCI-Steuerung
stellen die PORTSC1- und PORTSC2-Register physikalische verdrahtete
Verbindungen zu USB-Geräten
dar. Bei zumindest einigen hierin präsentierten Ausführungsbeispielen
stellen diese Register jedoch Verbindungen zu virtuellen Geräten dar
(keine tatsächlich
Verdrahtungs- oder Busverbindungen sind beteiligt). Das Clientende
des Druckertunnels 128 kann bestimmen, mit welchem Gerät der Computer 101 versucht
zu kommunizieren, durch Untersuchen der Adresse in dem TD-Tokenfeld (TD
= Transfer Descriptor = Übertragungsbeschreibungselement),
und den Verbindungs- und Aktivierungsstatus der PORTSC-Register.
-
Bei
zumindest einigen Ausführungsbeispielen
ordnet das Clientende des Druckertunnels 128 einen virtuellen
Drucker einem USB-Tor (z. B. PORTSC1) zu. Um den Computer 101 zu
benachrichtigen, den virtuellen Drucker zu erkennen, wird ein Verbindungsbit
(Bit 0) und möglicherweise
ein Verbindungsänderungsbit
(Bit 1) für
das entsprechende Tor aktiviert. Ansprechend auf die aktivierten Verbindungsbits
erfasst der Computer 101 den virtuellen Drucker und versucht,
den virtuellen Drucker zu spezifizieren (d. h. eine Adresse zuzuweisen)
und zu konfigurieren.
-
Anfangs
(bevor dem virtuellen Drucker durch den USB-Treiber des Hostcomputers
eine Adresse gegeben wurde) kann der virtuelle Drucker die Adresse „0” haben.
In diesem Zustand ist die Kommunikation mit dem virtuellen Drucker
basierend auf der Adresse allein problematisch, falls ein anderes USB-Gerät diese
gleiche Adresse hat. Um jegliche Adressierungskonflikte zu überwinden,
kann das Clientende des Druckertunnels 128 wählen, mit
welchem Gerät
es kommunizieren möchte
durch Aktivieren oder Deaktivieren jedes PORTSC-Registers (Bit 2
der PORTSC-Register). Somit ist das Clientende des Druckertunnels 128 bei
einigen Ausführungsbeispielen
in der Lage, die Werte der Bits in den PORTSC-Registern zu bestimmen
und Daten zu dem entsprechenden Gerät oder dem virtuellen Gerät zu übertragen.
Sobald ein virtueller Drucker spezifiziert wurde (z. B. demselben
eine andere USB-Adresse als 0 gegeben wird), kann das Tor für diesen
virtuellen Drucker permanent oder vorübergehend (z. B. bis zu dem
nächsten
Zurücksetzereignis)
spezifiziert werden, und das Clientende des Druckertunnels 128 ist
in der Lage, den virtuellen Drucker unter Verwendung der zugeordneten
Adresse desselben zu finden.
-
Wenn
ein Clientcomputer eine Druckanforderung erzeugt, wird die Anforderung
von einem lokalen Druckertreiber zu dem USB-Stapel 126 weitergeleitet.
Das Clientende des Druckertunnels 128 sendet dann die Druckanforderung
an die zugewiesene Adresse des virtuellen Druckers. Die Druckanforderung
wird tatsächlich
an das Serverende des Druckertunnels 128 gesendet und dann
an einen Drucker, der mit dem Server gekoppelt ist. Bei einigen
Ausführungsbeispielen
sind das Clientende und das Serverende des Druckertunnels 128 in
der Lage, Daten wie z. B. Druckanforderungen, Druckerstatusantworten,
Druckerausnahmen und andere Daten einzukapseln/zu entkapseln (z.
B. zu und von einem Netzprotokoll). Als ein Beispiel können Druckerdaten,
die von einem Netz gesendet oder empfangen werden, neu paketiert
werden zum Übertragen
von getunnelten Mitteilungen/Paketen zwischen einem USB-Protokoll
und einem Netzprotokoll (z. B. Ethernet mit TCP/IP). In einigen
Fällen
kapselt das Clientende des Druckertunnels 128 Druckanforderungen ein,
und das Serverende des Druckertunnels 128 entkapselt die
Druckanforderungen. Die Druckanforderungen werden dann zu einem
Drucker weitergeleitet, der lokal mit dem Server gekoppelt ist.
Außerdem kapselt
in einigen Fällen
das Serverende des Druckertunnels 128 Druckerstatusantworten
oder Druckausnahmen ein, und das Clientende des Druckertunnels 128 entkapselt
die Druckerstatusantworten oder Druckerausnahmen. Die Druckerstatusantworten oder
Druckerausnahmen werden dann durch den lokalen Druckertreiber des
empfangenden Clienten verarbeitet.
-
Bei
zumindest einigen Ausführungsbeispielen
handhabt der Druckertunnelverwalter mehrere Druckanforderungen. Überlappende
Druckanforderungen könnten
auf einer „Zuerst
kommen, zuerst bedient werden-”(First-Come-First-Serve-)Basis
oder einem anderen Handhabungsschema gehandhabt werden. Als ein
Beispiel puffert der Druckertunnelverwalter bei einigen Ausführungsbeispielen überlappende
Druckanforderungen und verarbeitet die Druckanforderungen sequentiell.
Alternativ ist ein Client, der die Steuerung des Druckers innehat,
in der Lage, das Senden von Druckanforderungen für einen eine Schwellenwertzeitdauer
fortzusetzen, bevor die Steuerung des Druckers zu einem wartenden
Client übertragen
wird. In jedem Fall kann die Steuerung des Druckers von einem steuernden
Client zu einem anderen Client übertragen
werden, der darauf wartet, mit einer anstehenden Druckanforderungen
fortzufahren. Während
ein Client darauf wartet, dass eine aktuell anstehende Druckanforderung
abgeschlossen wird, simuliert der Druckertunnelverwalter Standarddruckerverzögerungen
(z. B. eine Druckeraufwärmverzögerung),
um zu verhindern, dass ein wartender Client bestimmt, dass ein Druckerausfall
aufgetreten ist. Diese Fähigkeit
kann bei Ausführungsbeispielen
sinnvoll sein, wo ein Druckertreiber eines Clienten mit Standardverzögerungsmitteilungen
von einem lokalen Drucker kompatibel ist, aber nicht mit der gemeinschaftlichen
Verwendung eines Druckers.
-
Bei
zumindest einigen Ausführungsbeispielen
sind der Druckertunnelverwalter und die jeweiligen Enden des Druckertunnels 128 in
der Lage, eine Clientwahrnehmung der Druckerfahrung zu verwalten,
durch Einstellen von Druckertreiberauszeiteinstellungen, Simulieren
von Standarddruckerverzögerungen
und Präsentieren
von Statusmitteilungen, die für
die verbleibende Verzögerung
angemessen sind. Falls ein gegebener Clientdruckertreiber die gemeinschaftliche
Verwendung eines Druckers nicht unterstützt, erzeugen die jeweiligen
Enden des Druckertunnels 128 und der Druckertunnelverwalter
die Illusion, dass der bestimmte Client exklusive Steuerung des
Druckers hat (zumindest während
des Druckens).
-
Ausführungsbeispiele
von Clienten und Servern sind nicht auf den Computer 101 von 1 begrenzt. 1 stellt
lediglich ein Ausführungsbeispiel dar.
Alternative Ausführungsbeispiele
variieren mit Bezugnahme auf Verarbeitung, Speicher, Verbindungen,
Protokolle, Peripheriegeräte
und andere Funktionsaspekte. Allgemein sollten Clientcomputer in
der Lage sein, einen Standarddruckertreiber mit einer für die Verwendung
mit einem lokalen Drucker (z. B. einem USB-Drucker) auszuführen. Clientcomputer
unterstützen
auch den Betrieb eines Druckertunnels, der es einem entfernten Drucker
(d. h. einem Drucker, der an den Server angeschlossen ist) ermöglicht,
für den
Clientcomputer und den Druckertreiber des Clienten als ein lokaler
Drucker zu erscheinen.
-
Allgemein
sollten Servercomputer eine Schnittstelle bereitstellen zwischen
Clienten mit lokalen Druckertreibern und einen kompatiblen Drucker. Bei
zumindest einigen Ausführungsbeispielen
verbindet ein Servercomputer mit mehreren Clienten über ein
geeignetes Tor (z. B. ein Ethemet-Tor und/oder Hub). Der Servercomputer
ist auch an einen Drucker angeschlossen über ein geeignetes Tor (z.
B. ein USB-Tor). Bei einigen Ausführungsbeispielen stellt der
Servercomputer keinen zentralisierten Druckertreiber bereit, da
jeder Client einen lokalen Druckertreiber ausführt. Stattdessen unterstützt der
Servercomputer den Betrieb eines Druckertunnels und eines Druckertunnelverwalters,
um einen gemeinschaftlich verwendeten Drucker, der an den Server angeschlossen
ist, als einen lokalen Drucker für
jeden Client zu tarnen. Der Druckertunnelverwalter handhabt überlappende
Druckanforderungen durch Simulieren von Standarddruckverzögerungen
(durch die Clientdruckertreiber erkannt) und selektives Übertragen
der Steuerung des Druckers von einem Client zu einem anderen, um
es Clienten zu ermöglichen,
abwechselnd anstehende Druckanforderungen zu verarbeiten. Das Clientende
des Druckertunnels, das Serverende des Druckertunnels und der Druckertunnelverwalter
könnten
zusammen als eine einzige Entität
angesehen werden, die die Aufgabe erfüllt, es zu ermöglichen,
dass mehrere Clienten einen Drucker gemeinschaftlich verwenden,
der an den Server angeschlossen ist, als ob der Drucker für jeden
Client lokal wäre.
Die hierin beschriebenen unterschiedlichen Funktionen für den Druckertunnel umfassen
die Clienten und den Server in verschiedenen Mengen.
-
Wie
es vorher erwähnt
wurde, können
zentralisierte Druckertreiber (z. B. auf dem Server) problematisch
sein, da Aktualisierungen der Hardware, Firmware und/oder Software
von Clientcomputern und Druckern auftreten können, und das Modifizieren eines
Netzdruckertreibers auf einem kopflosen Server für unerfahrene Benutzer schwierig
ist. Im Gegensatz dazu liefern der Druckertunnel und der Druckertunnelverwalter
ausgewählte
Funktionen (z. B. Tarnen eines Druckers, der an einen Server angeschlossen
ist, als einen lokalen Drucker für
jeden Client, und Handhaben von überlappenden
Druckanforderungen von mehreren Clienten), von denen es sehr unwahrscheinlich
ist, dass sich dieselben ändern, selbst
wenn Clienten oder Drucker aktualisiert werden. In einigen Fällen können Aktualisierungen
(z. B. der Drucker wird verändert)
nur kleine Änderungen umfassen,
die an der Serverseite implementiert werden (z. B. der Server wird
konfiguriert, um einen neuen Drucker zu erkennen), ohne die Clienten
zu beeinträchtigen.
Obwohl der Druckertunnel in einer Geschäftsumgebung und selbst über große Entfernungen
verwendet werden kann, ist der Druckertunnel besonders vorteilhaft
in einer Heimumgebung, wo Benutzer häufig unerfahren sind. Anders
ausgedrückt,
einige Ausführungsbeispiele
des Druckertunnels und des Druckertunnelverwalters sind als Teil
eines Servers enthalten, der die Heimumgebung betrifft.
-
2 zeigt
ein System 200 gemäß Ausführungsbeispielen.
Wie es gezeigt ist, umfasst das System 200 eine Mehrzahl
von Clienten 202A bis 202N, die über ein
Netz 220 und einen Server 230 mit einem Drucker 250 koppeln.
Die Komponenten der Mehrzahl von Clienten 202A–202N,
das Netz 220, der Server 230 und der Drucker 250 wurden
vereinfacht, um das Beschreiben von Ausführungsbeispielen zu ermöglichen.
Bei verschiedenen Ausführungsbeispielen
haben die Clienten 202A–202N und der Server 230 mehr
oder weniger der Komponenten, die für den Computer 101 in 1 beschrieben
wurden.
-
In 2 umfasst
der Drucker 250 einen Prozessor 252, der mit einem
Systemspeicher 254 mit Druckersteuerbefehlen 256 gekoppelt
ist. Bei zumindest einigen Ausführungsbeispielen
ermöglicht
ermöglichen
es die Druckersteuerbefehle 226 dem Drucker 250,
Dokumente und Bilder zu drucken, die von dem Server 230 empfangen
werden. Nach Bedarf aktivieren die Druckerbefehlsteuerung 256 auch den
Prozessor 252, um Wartungsbedarf, Fehlfunktionen oder Ausnahmezustände des
Druckers 250 zu erfassen und nachfolgend Druckerwartungsanforderungen
und Benachrichtigungen auszugeben (z. B. Papier leer, Tonerstand
niedrig oder andere Benachrichtigungen). Der Prozessor 252 koppelt
auch mit einer I/O-Schnittstelle 258, die es dem Drucker 250 ermöglicht,
mit anderen Geräten
zu kommunizieren, wie z. B. dem Server 230 und den Clienten 202A–202N.
-
Eine
darstellende Beschreibung jedes Clienten wird durch Beschreiben
des Clienten 202A bereitgestellt. Wie es in 2 gezeigt
ist, umfasst der Client 202A einen Prozessor 204A,
der mit einem Systemspeicher 206A gekoppelt ist. Der Prozessor 204A koppelt
auch in einer Netzschnittstelle 212A und einer Eingabe-/Ausgabeschnittstelle 214A.
-
Bei
zumindest einigen Ausführungsbeispielen
ist der Systemspeicher 206A ein computerlesbares Medium,
das einen lokalen Druckertreiber 208A und einen Druckertunnel 210A speichert,
die durch den Prozessor 204A ausführbar sind. Der Systemspeicher 206A entspricht
zumindest einem von Sekundärspeicher,
Nur-Lese-Speicher (ROM; ROM = read-only memory), Direktzugriffsspeicher
(RAM; RAM = random access memory), oder einem anderen Speichermedium,
das derzeit bekannt ist oder später
entwickelt wird. Als ein Beispiel umfasst ein Sekundärspeicher
ein oder mehrere Plattenlaufwerke oder Bandlaufwerke und wird für nichtflüchtige Speicherung
von Daten und als eine Überlaufdatenspeichervorrichtung
verwendet, falls der RAM nicht groß genug ist, um alle Arbeitsdaten
zu halten. Ein Sekundärspeicher
kann verwendet werden, um Programme zu speichern, die in den RAM
geladen werden, wenn solche Programme für die Ausführung ausgewählt werden.
Ein ROM wird verwendet, um Befehle und vielleicht Daten zu speichern,
die während
der Programmausführung
gelesen werden. Ein ROM ist eine nichtflüchtige Speichervorrichtung,
die typischerweise eine geringe Speicherkapazität aufweist im Vergleich zu
der größeren Speicherkapazität von einem
Sekundärspeicher.
Ein RAM wird verwendet, um flüchtige
Daten zu speichern, und eventuell, um Befehle zu speichern. Ein
Zugriff sowohl auf einen ROM als auch einen RAM ist typischerweise schneller
als auf einen Sekundärspeicher.
-
Der
lokale Druckertreiber 208A unterstützt Drucken an einem lokalen
Drucker und ist kompatibel mit einem spezifischen Drucker oder einer
spezifischen Klasse von Druckern. Bei zumindest einigen Ausführungsbeispielen
kann der lokale Druckertreiber 208A erfassen, wenn ein
Drucker in die I/O-Schnittstelle 214A eingesteckt wird
(d. h. Plug-and-Play-Schritte).
Der lokale Druckertreiber 208A unterstützt auch verschiedene Funktionen,
wie z. B. das Bereitstellen einer Nutzer/Druckerschnittstelle, Spool-Betrieb
von Druckaufträgen,
Anzeigen von Mitteilungen für
einen Benutzer (z. B. Drucken eingeleitet, Drucken verzögert, Drucken
gelöscht, verbleibende
Zeit für
einen Druckauftrag, Papier-Leer-Mitteilungen,
Toner-Niedrig-Mitteilungen), Übertragen
von Druckqualitätauswahlmöglichkeiten durch
einen Benutzer an den Drucker oder andere Funktionen. Obwohl der
Client 202A in der Lage ist, mit einem lokalen Drucker
zu interagieren (z. B. Drucken an demselben und Empfangen von Mitteilungen von
demselben), der mit der I/O-Schnittstelle 214A gekoppelt
ist, basierend auf dem lokalen Druckertreiber 208A, ermöglicht es
der Druckertunnel 210A dem Client 202A, mit einem
entfernten Drucker (oder zumindest einem Drucker, der an einen Server
angeschlossen ist anstatt an den Client 202A) zu interagieren.
-
Bei
zumindest einigen Ausführungsbeispielen
unterstützt
der Druckertunnel 210A die Emulation eines virtuellen Druckers.
Anders ausgedrückt,
der Druckertunnel 210A bewirkt, dass der lokale Druckertunnel 208A mit
einem entfernten Drucker interagiert, als ob der entfernte Drucker
ein lokaler Drucker wäre,
der mit der I/O-Schnittstelle 214A gekoppelt ist. Der Druckertunnel 210A kann
die Emulation erreichen durch Einrichten einer virtuellen lokalen Druckeradresse
und geeignetes Lenken oder Emulieren von Kommunikation zwischen
dem lokalen Druckertreiber 208A und dem entfernten Drucker. Wenn
ein entfernter Drucker verwendet wird, wird die Kommunikation zu
und von der Netzschnittstelle 212A anstatt der I/O-Schnittstelle 214A gelenkt.
Wie es für
das Ausführungsbeispiel
von 1 erwähnt wurde,
entsprechen einige Ausführungsbeispiele
des Druckertunnels 210A einem Teil eines USB-Stapels, obwohl
andere Ausführungsbeispiele,
die derzeit bekannt sind oder später
entwickelt werden, möglich sind.
-
Wie
es in 2 gezeigt ist, umfasst der Server 230 einen
Prozessor 232, der mit einem Systemspeicher 234 gekoppelt
ist. Der Prozessor 232 koppelt auch mit einer Netzschnittstelle 238 und
einer I/O-Schnittstelle 240. Die Netzschnittstelle 238 ermöglicht es
dem Server 230, mit dem Netz 220 zu kommunizieren
und entspricht beispielsweise einer Ethernetschnittstelle. Die I/O-Schnittstelle 240 ermöglicht es
dem Server 230, mit einem Peripheriegerät zu kommunizieren, wie z.
B. dem Drucker 250, und entspricht beispielsweise einer
USB-Schnittstelle. Bei zumindest einigen Ausfühungsbeispielen sind die I/O-Schnittstellen 214A–214N gleich
wie die I/O-Schnittstelle 240. Anders ausgedrückt, der
Drucker 250 kann selektiv direkt mit dem Server 230 koppeln
oder mit einem der Clienten 202A–202N. Wenn der Drucker 250 direkt
mit dem Server 230 gekoppelt ist, sind die Clienten in
der Lage, den Drucker 250 durch den Server 230 gemeinschaftlich
zu verwenden, selbst wenn die lokalen Druckertreiber 208A–208N nur
einen lokalen Drucker und keinen gemeinschaftlich verwendeten Drucker
unterstützen.
-
Bei
zumindest einigen Ausführungsbeispielen
ist der Systemspeicher 234 des Servers 230 ein computerlesbares
Medium, das einen Druckertunnelverwalter 236 speichert,
der durch den Prozessor 202A ausführbar ist. Der Systemspeicher 234 entspricht
zumindest einem von Sekundärspeicher, ROM,
RAM oder einem anderen Speichermedium, das derzeit bekannt ist oder
später
entwickelt wird. Wenn er ausgeführt
wird, lenkt der Druckertunnelverwalter 236 Druckanforderungen
von den Clienten 202A–202N zu
dem Drucker 250. Das Druckanforderungshandhabungsschema
des Druckertunnelverwalters 236 arbeitet auf einer „Zuerst
kommen, zuerst bedient werden-”Basis
oder einem anderen Schema. Unabhängig
von dem Druckanforderungshandhabungsschema weist der Druckertunnelverwalter 236 selektiv
die Steuerung des Druckers 250 jedem jeweiligen Clienten 202A–202N zu,
auf eine Weise, die es den Clienten 202A–202N ermöglicht,
Druckanforderungen unter Verwendung der lokalen Druckertreiber 208A–208N auszuführen.
-
Bei
zumindest einigen Ausführungsbeispielen
handhabt ein Druckertunnelverwalter 236 eine nicht überlappende
Druckanforderung durch Zuweisen der Steuerung des Druckers 250 zu
dem Client, der die Druckanforderung sendet. Sobald die nicht überlappende
Druckanforderung abgeschlossen ist, wird der Drucker 250 nicht
einem der Clienten zugewiesen oder wird einem Standardclient zugewiesen. Falls
eine überlappende
Druckanforderung empfangen wird, puffert der Druckertunnelverwalter 236 die überlappende
Druckanforderung, bis eine Druckanforderung, die derzeit verarbeitet
wird, abgeschlossen ist. Die Steuerung des Druckers 250 kann
von einem Client zu einem anderen übertragen werden, um es jedem
Client zu ermöglichen,
eine Druckanforderung abzuschließen. Während der Druckertunnelverwalter 236 eine
Druckanforderung puffert, wird durch den Druckertunnelverwalter 236 eine
Standarddruckverzögerung
simuliert und an den lokalen Druckertreiber gesendet, dessen Druckanforderung
gepuffert wird. Anders ausgedrückt,
der lokale Druckertreiber erkennt eine Standarddruckverzögerung (z.
B. eine Aufwärmverzögerung),
erkennt aber keine Verzögerung
durch gemeinschaftliche Verwendung des Druckers. Falls ein lokaler
Druckertreiber in der Lage ist, eine Verzögerung durch gemeinschaftliche
Verwendung eines Druckers zu erkennen, kann die Verzögerung durch
gemeinschaftliche Verwendung eines Druckers als eine der Standardverzögerungen
verwendet werden, die der Druckertunnelverwalter 236 verwendet,
um zu bewirken, dass der lokale Druckertreiber abwartet, bis er
an der Reihe ist, die Steuerung des Druckers 250 zu empfangen
und dann eine Druckanforderung abzuschließen. Der Druckertunnelverwalter 236 minimiert
vorzugsweise die Wartezeit für
anstehende Druckanforderungen und verhindert, dass lokale Druckertreiber
bestimmen, dass der Drucker 250 nicht verfügbar ist
oder anderweitig ausgefallen ist (wenn der Drucker einfach gemeinschaftlich
verwendet wird).
-
Bei
zumindest einigen Ausführungsbeispielen
arbeiten die Druckertunnel 210A–210N und/oder der
Druckertunnelverwalter 236, um Druckertreiberauszeiteinstellungen
einzustellen, Standarddruckverzögerungen
zu simulieren, Statusmitteilungen zu präsentieren, die für die verbleibende
Verzögerung oder
andere verwandte Funktionen geeignet sind. Falls ein lokaler Druckertreiber
in der Lage ist, Druckanforderungen zu spoolen, sind die entsprechenden
Druckertunnel und Druckertunnelverwalter 236 in der Lage,
die Spooling-Kapazität zu beeinflussen,
um eine Druckanforderung zu verzögern,
ohne einen Ausnahmezustand zu erzeugen. Falls der Drucker 250 eine
Ausnahmebenachrichtigung ausgibt (z. B. Toner niedrig), kann der
Druckertunnelverwalter 236 die Ausnahmebenachrichtigung
an den Clienten mit der aktuellen Steuerung des Druckers senden. Falls
es keinen steuernden Clienten gibt, wenn die Ausnahmebenachrichtigung
durch den Drucker 250 aktiviert wird, speichert oder löscht der
Druckertunnelverwalter 236 die Ausnahmebenachrichtigung,
bis ein Client eine Druckanforderung sendet und die Steuerung des
Druckers 250 empfängt.
Falls die Ausnahmebenachrichtigung gelöscht wird, müsste der
Drucker 250 die Ausnahme erneut aktivieren. Bei einigen
Ausführungsbeispielen
sendet der Druckertun nelverwalter 236 Ausnahmebenachrichtigungen an
alle Clienten 202A–202N.
Alternativ sendet der Druckertunnelverwalter 236 Ausnahmebenachrichtigungen
an ausgewählte
Clienten (z. B. ein Administrator des Servers 230 wählt die
entsprechenden Clienten aus).
-
Gleichartig
dazu, falls eine Druckerwartungsbenachrichtigung (z. B. Papier leer)
während
einer Druckanforderung ausgegeben wird, ist der Druckertunnelverwalter 236 in
der Lage, die Druckerwartungsbenachrichtigung an den Client zu senden,
der den Drucker 250 steuert. Zusätzlich oder alternativ sendet
der Druckertunnelverwalter 236 die Druckerwartungsbenachrichtigung
an zumindest einen der nicht steuernden Clienten.
-
Bei
zumindest einigen Ausführungsbeispielen
umfasst der Server 230 einen Heimserver, der physikalisch
nahe zu den Clienten 202A–202N ist (z. B. innerhalb
des gleichen Hauses oder Gebäudes). Alternativ
umfasst der Server 230 einen entfernten Server, der von
den Clienten 202A–202N entfernt
ist. In jedem Fall ermöglicht
es der Server 230 mehreren Clienten, an dem Drucker 250 zu
drucken, basierend auf den lokalen Druckertreibern 208A–208N,
anstatt auf einem zentralisierten Druckertreiber. Als ein Beispiel
kann der Server 230 ein Linuxbetriebssystem oder ein anderes
Betriebssystem mit schwacher Druckertreiberunterstützung ausführen. In
solch einem Fall ermöglicht
das Verwenden des Druckertunnelschemas Flexibilität beim Entwerfen
des Servers 230, ohne die gemeinschaftliche Verwendung
des Druckers zu beeinträchtigen.
Vorteilhafterweise hängt
das Druckertunnelschema nicht von einem SMB-Protokoll (SMB = Server
Message Block = Servermitteilungsblock) oder anderen Druckprotokollen ab,
die für
qualitativ hochwertige (teure) Drucker verwendet werden.
-
3 stellt
ein Verfahren 300 gemäß Ausführungsbeispielen
dar. Das Verfahren 300 umfasst das Bereitstellen eins Druckertunnels,
der mehrere Clienten über
einen Server mit einem Drucker verbindet (Block 302). Wie
es hierin beschrieben ist, ermöglicht
es ein Druckertunnel einem entfernten Drucker, mit jedem lokalen
Druckertreiber eines Clienten verwendet zu werden. Bei zumindest
einigen Ausführungsbeispielen
emuliert der Druckertunnel einen virtuellen Drucker, der für jeden
Client eine virtuelle Adresse aufweist. Die virtuelle Adresse wird
für Kommunikation
zwischen dem Client und dem entfernten Drucker verwendet. Falls
keine mehreren Druckanforderungen empfangen werden (Bestimmung Block 304)
wird das Druckereigentum (Steuerung) selektiv zugewiesen, um es
einem Clienten zu ermöglichen, eine
nächste
Druckanforderung zu verarbeiten (Block 306). Falls mehrere
Druckanforderungen empfangen werden (Bestimmung Block 304)
werden Druckanforderungskonflikte unter Verwendung von kompatiblen
Druckerverzögerungen
getarnt (Block 308). Anders ausgedrückt, während überlappende Druckanforderungen
gepuffert werden, empfängt
jeder wartende Client eine kompatible Druckerverzöge rungsbenachrichtigung
anstatt eine „Drucker
nicht verfügbar” oder ähnliche
Mitteilung. Block 308 wird wiederholt, bis eine aktuelle
Druckanforderung abgeschlossen wurde (Bestimmung Block 310).
Sobald eine aktuelle Druckanforderung abgeschlossen wurde (Bestimmung
Block 310) wird das Druckereigentum selektiv zugewiesen,
um es einem Clienten zu ermöglichen,
eine nächste
Druckanforderung zu verarbeiten (306).
-
Das
Verfahren 300 ermöglicht
es einem Client, der einen lokalen Druckertreiber ausführt, einen Drucker
gemeinschaftlich zu verwenden, der an einen Server angeschlossen
ist. Druckertunnelfunktionen, die auf jedem Client und auf dem Netzserver laufen,
ermöglichen
es jedem Client, selektiv den Drucker zu steuern, ohne Druckanforderungskonflikte
wahrzunehmen. Das Verfahren zum Auswählen eines Druckers, wenn es
mehrere Druckanforderungen gibt, entspricht einem FIFO-Verfahren,
einem Priorisierungsverfahren (z. B. der aktuelle Drucker-„Halter” erhält Priorität), oder
einem anderen Verfahren. Alle Druckanforderungskonflikte werden
als Druckverzögerungen
getarnt, die mit Clientdruckertreibern kompatibel sind. Das Verfahren 300 könnte auch
Prozesse umfassen zum selektiven Verteilen von Druckerwartungsanforderungen
und Ausnahmezuständen von
einen Drucker an zumindest einen der Clienten, die den Drucker gemeinschaftlich
verwenden.
-
4 stellt
ein Verfahren 400 gemäß Ausführungsbeispielen
dar. Wie es gezeigt ist, umfasst das Verfahren 400 die
gleichen Blöcke
wie das Verfahren 300 von 3. In 4 wird
die Ausgabe von Block 306 in den Bestimmungsblock 304 eingegeben,
anstatt in den Block 302, wie es für das Verfahren 300 dargestellt
war. Anders ausgedrückt,
das Verfahren 300 stellt dar, dass der Prozess des Bereitstellens
eines Druckertunnels wiederholbar ist (d. h. neue Druckertunnel
können
gebildet werden) während
das Verfahren 400 darstellt, dass ein Druckertunnel beibehalten
werden kann.
-
Zusammenfassung
-
Ein
System ist vorgesehen, wobei das System zumindest einen Clientcomputer
(202A–202N) und
einen Servercomputer (230) umfasst, der mit dem zumindest
einen Clientcomputer (202A–202N) über ein
Netz (220) gekoppelt ist. Das System weist auch einen Drucker
(250) auf, der mit dem Servercomputer (230) gekoppelt
ist und durch den zumindest einen Clientcomputer (202A–202N)
gemeinschaftlich verwendet wird. Der Drucker (250) wird durch
jeden Clientcomputer (202A–202N) als ein lokaler
Drucker wahrgenommen.