-
HINTERGRUND
DER ERFINDUNG
-
Technisches
Gebiet
-
Diese
Erfindung bezieht sich allgemein auf Bilderzeugungsvorrichtungen
für Dokumenterstellungsvorrichtungen,
und insbesondere bezieht sich diese Erfindung auf eine Mehrere-Originalkopien-Bilderzeugungsvorrichtung,
die entweder direkt, durch ein Netzwerk oder auf entfernte Weise
mit einer Auftragsquellenerstellungsvorrichtung, z. B. einem Computer,
gekoppelt ist und in der Lage ist, aus einer einzigen Übertragung
einer Kopie mehrere Kopien zu erstellen.
-
Stand der
Technik
-
Es
gibt viele elektronische Vorrichtungen, die in der Lage sind, Daten
zu erzeugen, die in einer Dokumentform gedruckt werden müssen. Diese
allgemeine Klasse von Dokumenterstellungsvorrichtungen umfaßt Vorrichtungen
wie z. B. Computer, Faxgeräte,
Digitalkameras und Kopierer, medizinische Bilderzeugungsvorrichtungen,
optische Scanner, Satellitenbilderzeugungsvorrichtungen, wissenschaftliche
Datensammelvorrichtungen usw. Bei diesen Vorrichtungsarten ist es üblich, einen
einzigen Prozessor zu verwenden, um die verschiedenen Datensammel-,
Organisations- und Druckanforderungsfunktionen auszuführen. Ungünstigerweise
steht der Prozessor, wenn er gerade damit beschäftigt ist, eine Druckanforderung
zu verarbeiten, für
andere Aufgaben nicht zur Verfügung.
-
Ein
Beispiel, das dieses Problem deutlich veranschaulicht, ist ein Fall,
bei dem der Benutzer eines Personal-Computers mehrere Kopien eines
einzelnen Dokuments anfordert und dann warten muß, bis der Computer mehrere
Druckanforderungen ab schließt,
bevor der Benutzer den Computer erneut benutzen kann. Um diesem
Problem abzuhelfen, entwickelten Computeranwendungsentwerfer ein
Hintergrunddrucken, bei dem versucht wird, die Computer verfügbarer zu
machen, indem Druckanforderungen lediglich während Ruhezeiten für den Prozessor verarbeitet
werden. In diesem Fall würde
ein mehrseitiges, sortiertes Dokument, das "n" Male
gedruckt wird, eine Vordergrundverarbeitung des Dokuments des Benutzers
beträchtlich
verlangsamen. Diese Implementierung ist eine Folge der Art und Weise,
wie der Befehl "Kopien=" ursprünglich auf
LaserJetTM-Druckern, speziell in der Drukkerbefehlssprache
(PCL – printer
command language), die mittlerweile zu einem Industriestandard wurde,
implementiert war. Die meisten Benutzer erleben eine beträchtliche
Abnahme des Ansprechverhaltens des Computers. Ferner kann, wenn
der Druckauftrag wiederholt über
ein Computernetzwerk an den Drucker gesendet wird, die Ansprechzeit
des Kommunikationsnetzwerks deutlich beeinflußt werden.
-
Ein
Drucken mehrerer Kopien eines mehrseitigen, sortierten Dokuments
unter Verwendung einer Softwareanwendung wie z. B. eines Textverarbeitungssystems
beinhaltet mehrere Übertragungen von
der Anwendung an den Drucker. Bei DOS-Umgebungen kann der Benutzer aufgrund
der Zeit, die die Anwendung benötigt,
um mehrere Aufträge
zu formatieren und zu drucken, einen beträchtlichen Produktivitätsverlust
erleiden. Da der Druckerbefehl "Kopien=" seitenbasiert und
nicht druckauftragbasiert ist, waren Treiber nicht in der Lage,
sortierte Mehrkopien bereitzustellen. Ein intelligentes Codieren
ermöglichte
es Anwendungen, so viele Schleifen zu durchlaufen wie es Kopien
gab. Wenn der Auftrag aus Rückseite
an Rückseite
wiederholten, sortierten Seiten bestand, empfingen Kunden trotz
der Einschränkungen
bezüglich "Kopien=" einen sortierten
Auftrag. Obwohl das Codieren intelligent sein kann, bedeutet es
trotzdem eine Verschwendung von Netzwerkbandbreite und bewirkt in
manchen Fällen,
daß der Druckauftrag
bei einer Rate verarbeitet wird, die beträchtlich niedriger ist als die
theoretische Geschwindigkeit der Druckmaschine.
-
Derzeit
wird das Problem eines Anforderns mehrerer Kopien eines gedruckten
Auftrags auf eine von zwei Arten gelöst. Die erste Lösung besteht
darin, sofort mehrere Kopien anzufordern, was bedeutet, den Computer
und das Netzwerk zu verwenden, das den Computer so lange mit dem
Drucker verbindet, wie es nötig
ist, um die angeforderten Kopien zu erzeugen. Dies kann Minuten,
Stunden oder sogar Tage dauern. Das Ergebnis ist, daß der Benutzer warten
muß, während der
Computer, das Netzwerk und der Drucker besetzt sind. Folglich werden
derartige Aufträge,
wenn sie erledigt werden, oft nach den üblichen Arbeitszeiten oder
an Wochenenden begonnen, um eine Auswirkung auf andere und eine
Verschwendung der eigenen Zeit zu minimieren. Die zweite Lösung besteht
darin, ein Originaldokument zu drucken und Kopien auf einem Kopierer
zu machen. Dies erfordert den Kauf, den Betrieb und die Wartung
eines Kopierers, was zusätzlich
zum Besitz eines Druckers weitere Ausgaben bedeutet. Beim Transportieren
des Originaldokuments zu und von dem Kopierer wird wertvolle Zeit
verschwendet, und eine zusätzliche
Schulung ist erforderlich, um den Kopierer korrekt zu bedienen.
Diese Aufgaben werden ferner oft bei Nacht oder an Wochenenden durchgeführt oder
an Untergebene delegiert, um die zeitliche Beanspruchung des Autors
des Dokuments zu minimieren. Ferner nimmt die Qualität des Drucks oft
ab, wenn Kopien gemacht werden, und Teile des Originaldokuments
können
durch Dokumentzufuhrvorrichtungen usw. zerstört oder beschädigt werden.
-
Bei
Netzwerkumgebungen ist ein einzelner Computer oder Server oft für die Aufgabe
des Druckens reserviert. Dieser Computer ist mit einer Druckerspoolersoftware
ausgestattet, die Druckaufträge auf
dem Festplattenlaufwerk des Computers in einer Warteschlange anordnet.
Die einzelnen Druckaufträge
werden an den Drucker gesandt, wenn der Drucker verfügbar wird.
Falls mehrere Originalkopien (Mopien) angefordert werden, speichert
der Spooler die angeforderte Anzahl von Kopien, wobei jede Kopie
im wesentlichen ein separater Druckauftrag ist. Ob in großen Netzwerken,
kleinen Netzwerken oder an alleinstehenden Computern – der Speicherbedarf zum
Drucken mehrerer Originale ist direkt proportional zu der Anzahl
der Kopien und der Größe des angeforderten
Auftrags. Obwohl dies einen Teil der Last der Dokumenterstellungscomputers
lindert, da er nicht erst darauf warten muß, daß eine Mopie gedruckt wird,
bis die nächste
gesandt wird, muß er trotzdem
jede Mopie als separate Druckanforderung senden.
-
In
der WO 88/10477, gegen die sich die Patentansprüche abgrenzen, ist ein elektronischer
Drucker beschrieben, der mehrseitige Dokumente als Schriftzeichencodesignale
empfängt,
die an eine Mustererstellungsvorrichtung zur Rasterisierung angelegt
werden. Die rasterisierten Signale werden elektronisch gespeichert,
so daß eine
Mehrzahl von elektronisch sortierten, mehrseitigen Sätzen ohne eine
erneute Rasterisierung gedruckt werden kann. Der Prozeß umfaßt die Schritte
des Anlegens der Schriftzeichencodesignale an eine Mustererstellungsvorrichtung
zum Zweck einer Umwandlung zu einem rasterisierten Videodatenstrom
zum Drucken, zum elektronischen Speichern der Bilddaten in rasterisierter
Form und zum elektronischen Sortieren der gespeicherten Bilddaten,
indem sie zum Drucken in einer ordnungsgemäßen Sequenz präsentiert
werden, wie dies oft erforderlich ist, um die gewünschte Anzahl
von sortierten Dokumentsätzen
zu erzeugen. Die Mehrzahl von elektronisch sortierten, mehrseitigen
Sätzen
kann ohne eine erneute Rasterisierung gedruckt werden.
-
In
der US-A-5,179,637 ist ein System zum Verteilen von Druckaufträgen, die
von einer Druckbilddatenquelle empfangen werden, unter einem Satz
von Druckmaschinen und zugeordneten Bildprozessoren offenbart. Ein
Zeitplaner ist mit einem Eingangsdatenbus gekoppelt, um codierte
Daten von einer Druckbilddatenquelle zu empfangen, und die codierten Daten
werden an einen Bildprozessor transferiert, der derzeit keine Daten
verarbeitet. Der Bildprozessor entwickelt einen Satz von Druck-
und Betriebsdatendateien, die Druckbilder und Seiten darstellen,
die einen vollständigen
Druckauftrag umfassen, zusammen mit Daten, die die Anzahl von Kopien
jedes derartigen zu druckenden Bildes oder jeder derartigen zu druckenden
Seite angeben. Die Druckmaschinenbetriebsdatendateien werden anschließend an
Druckmaschinen, die für
ein Drucken frei sind, verteilt, bis alle Bilder des Druckbefehls
gedruckt sind.
-
In
der US-A-4,912,670 ist ein Drucker beschrieben, der mit einem Neudruckbefehl
versehen ist, der von einer externen Vorrichtung oder von einem
Neudruckschalter des Druckers einzugeben ist.
-
Die
EP 0 478 965 A1 bezieht
sich auf eine Druckvorrichtung, die die Verarbeitung von Druckdaten
ermöglicht,
während
eine große
Menge anderer Druckdaten verarbeitet wird.
-
Die
JP-A-04 216983 beschreibt eine Druckvorrichtung. Diese Vorrichtung
sieht nicht die Speicherung von Druckauftragsdaten in einer Datenspeichervorrichtung
vor.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, eine verbesserte
Vorrichtung und ein verbessertes Verfahren zum Drucken mehrerer
Kopien zu schaffen, die die Verwendung von Netzwerkressourcen, Rechenzeit,
Speicherraum und Druckzeit zum Erhalten der gewünschten Anzahl von Kopien verringern.
-
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1 und durch ein
Verfahren gemäß Anspruch
3 gelöst.
-
Zur
Erläuterungszwecken
kann die Erfindung so charakterisiert werden, daß sie drei Facetten aufweist.
Die erste besteht darin, die Bilderzeugungsvorrichtung mit einer
lokalen Datenspeicherungsspeichervorrichtung, vorzugsweise nicht-flüchtig, z.
B. einer Festplatte, zu versehen. Die zweite Facette ist die Integration
von Firmware oder einer anderen Steuerungselektronik in die Bilderzeugungsvorrichtung,
wobei die Firmware oder andere Steuerungselektronik konfiguriert
ist, um einen Mopiedruckauftrag zu identifizieren, den Mopiedruckauftrag
zu der lokalen Datenspeicherungsvorrichtung zu kopieren, wenn der
Auftrag an die Druckmaschine gesandt wird, und "n–1"-Aufträge an die
Druckmaschine zu senden, wenn sie verfügbar ist, wobei "n" gleich der Gesamtanzahl von angeforderten
Mopien ist. Die dritte Facette erfordert die Modifizierung der Anwendungssoftware
und des Druckertreibers oder einer anderen Quelldokumenterstellungsvorrichtung, um
lediglich eine einzige Kopiedruckanforderung zu senden, die durch
einen Befehl eingeleitet wird, der die gewünschte Anzahl von Mopien identifiziert.
Jedoch ermöglicht
die Erfindung, daß eine
Druckanforderung, die nicht durch den Befehl eingeleitet wird, auf
eine normale Weise vonstatten geht. Bei einer UNIXTM-,
DOS- oder WindowsTM-Umgebung muß die Anwendung
und/oder der Treiber eine Unterstützung für den Befehl @PJL_JOB_QTY =
x, eine Bestätigung,
daß PCL_Kopien
= 1, eine Unterstützung
für eine
Sortierung, die bei manchen Umgebungen impliziert sein kann, und
eine Unterstützung
für den
Befehl "Sortieren=" in PostScriptTM" bereitstellen.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist eine schematische
Darstellung eines Systems zum Drucken mehrerer Originalkopien eines
Dokuments;
-
2 ist eine schematische
Darstellung eines Druckers zum Drucken mehrerer Originalkopien eines
Dokuments;
-
3 ist eine graphische Darstellung
einer Puffernutzung für
eine Verarbeitung durch die Firmware;
-
4 ist eine graphische Darstellung
der IOP-Aufgabe der Firmware, in der die Erfindung implementiert
ist;
-
5 ist eine graphische Darstellung
einer Pufferinitialisierung gemäß der Erfindung;
-
6 ist eine graphische Darstellung
einer Platten-I/O-Teilsysteminitialisierung
gemäß der Erfindung;
-
7A, 7B und 7C sind
ein Flußdiagramm des
Mopieschreibfreigabecodes gemäß der Erfindung;
-
8 ist ein Flußdiagramm
des Mopielesecodes gemäß der Erfindung;
und
-
9 ist ein Flußdiagramm
der Zustandsmaschine gemäß der Erfindung.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
Unter
Bezugnahme auf die Figuren ist die Erfindung an einem Laserjet4VTM-Laserdrucker von Hewlett Packard implementiert
gezeigt, der allgemein mit 100 bezeichnet und in schematischer
Form gezeigt ist. Diese bestimmte Implementierung eignet sich allgemein
für Druckerprodukte,
die von der Abstammung der Familie der i80960-Firmware abgeleitet
sind. Dieser bestimmte Drucker wurde ausgewählt, weil er bereits ein Plattenlaufwerk
besaß,
das für
eine lokale Schrittartspeicherung installiert war. Man muß jedoch
deutlich verstehen, daß die
Erfindung nicht auf Laserdrucker beschränkt ist, da sie gleichermaßen auf
andere Bilderzeugungsvorrichtungen wie z. B. LED-Drucker, Tintenstrahldrucker, Blasendrucker
bzw. Bubble-Drucker, mechanische Drucker, Thermodrucker usw. anwendbar
ist. In den Figuren wird die Erfindung manchmal als TOPAZ bezeichnet,
was ein Akronym für Transmit
Once, Print a Zillion (einmal übertragen,
x-mal drucken) ist.
-
Bei
diesem bestimmten Ausführungsbeispiel der
Erfindung ist ein Personal-Computer 10 durch ein Netzwerk 20 mit
einem Drucker 100 verbunden. Die Verbindung mit dem Drucker 100 könnte ebensogut eine
Direktverbindung unter Verwendung eines Parallel- oder eines Seriell-Kabels
oder sogar eine Fernverbindung über
eine Telekommunikationsverknüpfung,
eine Infrarotverknüpfung
oder eine Funkfrequenzverknüpfung
sein. Der Computer 10 weist in seinem Speicher eine Dokumenterstellungssoftwareanwendung 11 und
einen zugeordneten Druckertreiber 12 auf. Kollektiv definieren
diese eine der möglichen
Quelldokumenterstellungsvorrichtungen, auf die zuvor Bezug genommen
wurde. Wie später
besser verständlich
wird, besteht das Hauptkriterium der Quelldokumenterstellungsvorrichtung
darin, daß sie konfiguriert
ist, um eine einzelne Übertragung
einer Kopie des Dokuments zu senden, die mit einem Befehl eingeleitet
wird, der die gewünschte
Anzahl von Mopien angibt, hier den Befehl "@PJL_JOB_QTY = x". Die Softwareanwendung 11 und
der Druckertreiber 12 sind so modifiziert, daß, wenn
ein Benutzer mehrere Originalkopien eines Dokuments anfordert, die Übertragung
von Daten an den Drucker 100 eine einzige sortierte elektronische
Kopie des Dokuments enthält,
die durch den Befehl @PJL_JOB_QTY = x eingeleitet wird, wobei x
gleich der gewünschten
Anzahl von Originalkopien ist. Die Anwendung 11 und der
Druckertreiber 12 müssen
ferner die Variable PCL_Kopien auf Eins einstellen und in einer
PostScriptTM-Umgebung die Sortiervariable
auf wahr einstellen.
-
Einfacher
und allgemein ausgedrückt
weist der Drucker 100 eine mit einer Steuerung oder einem Formatierer 102 verbundene
Druckmaschine 101 auf, die zu druckende Daten von dem Parallele-Eingangs-/Ausgangs-Tor
oder -Kanal (PIO-Tor oder -Kanal) 103, dem Serielle-Eingangs-/Ausgangs-Tor
oder – Kanal
(SIO-Tor oder -Kanal) 104 und den Modulare-Eingangs-/Ausgangs-Toren oder
-Kanälen (MIO-Toren
oder -Kanälen) 105 empfängt. Andere Arten
von Eingängen,
einschließlich
Infrarot- und Hochfrequenzkopplungen, sind ebenfalls mit der Erfindung
vereinbar.
-
Der
Formatierer 102 umfaßt
eine Datenspeicherungsvorrichtung, hier ein Plattenlaufwerk 108, eine
zugeordnete Elektronik, die den Formatierer mit den Eingängen verbindet,
eine Verarbeitungselektronik, einen Direktzugriffsspeicher (RAM) 106,
einen Nur-Lese-Speicher (ROM) 107 und eine zugeordnete Elektronik,
die den Formatierer mit der Druckmaschine 101 verbindet.
Die Steuerungssoftware oder -firmware für den Formatierer 102 befindet
sich in dem ROM 107, auch als Firmware 107 bezeichnet.
Ein spezifischer Abschnitt dieser Firmware 107 wird als die
Persönlichkeit 109 bezeichnet,
die steuert, wie der Druckauftrag zu einem rasterisierten Datenstrom wiedergegeben
wird. Die Persönlichkeit 109 kann mehrere
Persönlichkeiten
enthalten, um verschiedene Arten von Druckaufträgen wiederzugeben, und oft enthält sie diese
wirklich. Beispielsweise gibt es oft eine separate Persönlichkeit
für PostScriptTM-Druckaufträge und eine separate Persönlichkeit
für PCL-Druckaufträge. Die
Erfindung kann ohne weiteres bei Bilderzeugungsvorrichtungen, die
bereits eine Datenspeicherungsvorrichtung aufweisen, implementiert
werden, indem der existierende ROM durch einen modifizierten Rom 107 ersetzt
wird.
-
Der
RAM 106 wird für
mehrere Funktionen verwendet, die allgemein folgendermaßen kategorisiert
werden können:
Puffern von ankommenden Daten, Mopie-Lese-/Schreib-Pufferung, Umwandeln
der Daten zu einem rasterisierten Ausgangsstrom und Puffern der
rasterisierten Daten für
eine Ausgabe an die Druckmaschine 101. Wenn Daten von dem
Eingang empfangen werden, werden die Daten geparst bzw. syntaktisch
analysiert, um Druckersteuerbefehle wie z. B. PCL-, PJL- und PostScriptTM-Befehle herauszuziehen. Diese Befehle
werden durch den Formatierer 102 verwendet, um einen Mopiedruckauftrag
auf seinem Weg zu der Persönlichkeit 109 zu
der Platte 108 zu kopieren, und werden durch die Persönlichkeit 109 verwendet,
um die rasterisierten Daten für
die Druckmaschine 101 wiederzugeben, und sie werden durch
den Formatierer 102 verwendet, um die Druckmaschine 101 zu
steuern.
-
Die
Software- oder Firmware-Aspekte der Erfindung sind in der IOP-Aufgabe
(IOP =input output processing, Eingabe-/Ausgabe-Verarbeitung) der Drucker-Firmware 107 implementiert.
Dies ist ein Abschnitt der Firmware, der Sichtbarkeit und Kenntnis der
Eingangskanäle
aufweist. Alle Eingangskanäle, einschließlich Netzwerkkarten
auf dem MIO-Bus, den Seriell- und Parallel-Kanälen verarbeiten durch die IOP-Aufgabe.
-
Der
Codeaspekt der Erfindung besteht aus Initialisierungsroutinen, Parsingroutinen
und einer Zustandsmaschine, die die Verwaltung und Zeitplanung von
Puffern, die Daten enthalten, koordiniert, und aus einer Steuerung
des Platten-I/O-Teilsystems.
Das Platten-I/O-Teilsystem wurde ursprünglich implementiert, um PostScriptTM-Schriftart-Erfordernisse zu handhaben.
Die Erfindung nutzt Platten-I/O-Teilsystem-Schnittstellenanrufe.
-
Die
Zustandsmaschine ist innerhalb der Einschränkungen des nachrichtenbasierten
Betriebssystems implementiert. Der gewünschte Dateisystembetrieb wird
unter Verwendung von vordefinierten Dateisystembetriebscodes eingerichtet.
In einer vordefinierten Dateisystemstruktur sind spezifische Felder
eingerichtet, einschließlich
der Adresse, wo Daten zu lesen oder zu schreiben sind, und der Länge der
Daten, die gelesen oder geschrieben werden sollen.
-
Die
Erfindung arbeitet innerhalb der Einschränkungen von bestehenden Datenstrukturen,
die bei den IOP-, PIO- und MIO-Aufgaben üblich sind. Warteschlangen
von Puffern sind üblich.
Eingabevorrichtungen wie z. B. Seriell-, Parallel- und Mio-Vorrichtungen
erhalten jeweils eine Anzahl von Warteschlangen aufrecht. Ein typischer
I/O-Puffer beginnt sein Leben als 1024- oder 2048-Byte-Brocken eines Speichers,
der bei einer Aufgabeinitialisierung zugewiesen wird. 1024-Byte-Puffer werden üblicherweise von
Netzwerk-Mio-Karten verwendet. 2048-Byte-Puffer werden durch den
Paralleladapter und die zugeordnete Aufgabe verwendet.
-
Die
Funktion Sende_Puffer_an_PS (send_Buffer_to_PS) in der IOP-Aufgabe
wird gerufen, wenn ein Kanal aktiv wird und beginnt, Daten zu empfangen.
Jeder Puffer wird geparst, in dem nach spezifischen PJL-Befehlen
gesucht wird, die durch eine konforme Anwendung und einen konformen Treiber
eingefügt
wird. Falls eine geeignete Zeichenkette gefunden wird, wird die
Zustandsmaschine 110 aktiviert. Die Zustandsmaschine 110 schreibt
den Inhalt aller Puffer, die anschließend an die Funktion Sende_Puffer_an_PS
gesendet werden, auf eine Platte. Jeder Puffer wird bezüglich der
UEL-Zeichenfolge
(UEL = Universal End of Language, universelles Sprachende) durchsucht,
und wenn sie gefunden wird, läßt die Zustandsmaschine
den Dateizeiger in der Auftragsdatei zurücklaufen und schaltet zu dem Lesemodus.
Die Zustandsmaschine 110 entfernt dann einen 2048-Byte-Puffer
aus einer Warteschlange von leeren Mopiepuffern. Der leere Mopiepuffer wird
zu einer Dateisystemleseanforderung weitergegeben, die versucht,
2048 Byte zu lesen. Wenn der Lesevorgang abschließt, wird
der gefüllte
Puffer zum Verarbeiten an die Persönlichkeit 109 gesandt.
Große
mehrseitige, sortierte Druckaufträge erfordern, daß mehrere
Puffer aus einer Warteschlange genommen und an die Persönlichkeit 109 gesandt
werden. Wenn die Persönlichkeit 109 das
Verarbeiten eines Puffers abgeschlossen hat, wird der Puffer zu
der IOP-Ausgabe
zurückgegeben
und wieder in der Leere-Mopiepuffer-Warteschlange plaziert. Dieser Vorgang
wird "n–1" Mal wiederholt,
bis die Anzahl von durch den Benutzer spezifizierten mehrseitigen
sortierten Kopien gedruckt ist. Es ist wichtig, die zwei Arten von
verwendeten Puffern zu verstehen. Beide Arten von Puffern weisen
genau dasselbe Format und genau denselben Aufbau auf und müssen gleich
aussehen, um durch die Persönlichkeit 109 verwendbar zu
sein. Der Unterschied der Puffer ermöglicht, daß die leeren Puffer zu ihren
jeweiligen "Heimat"-Warteschlangen zurückgegeben
werden, was gewährleistet,
daß eine
Warteschlange immer mit leeren Puffern aufgefüllt wird. Wie aus 4 ersichtlich sind, werden
Puffer, die von dem bzw. den Mio-Kanal bzw. Mio-Kanälen 105,
dem Parallel-I/O-Kanal 103 und dem Seriell-Kanal 104 an
der IOP-Aufgabe ankommen, allesamt von Aufgaben geliefert, die sich
außerhalb
der IOP-Aufgabe befinden. Traditionell werden diese Puffer einfach
durch die IOP-Aufgabe zu der Persönlichkeit 109 geroutet.
Die Erfindung unterbricht dieses Routen nicht, sondern kopiert einfach den
Inhalt der Puffer, während
sie zu der Persönlichkeit 109 geroutet
werden. Dies erzeugt die erste Mopie ohne eine Leseplattenaktivität. Um die
nächsten "n–1" Mopien zu erzeugen, müssen Puffer
von innerhalb der IOP-Aufgabe verwendet werden. Dies ist der Zweck
der Funktion Leere_Kopie_Puffer_Warteschlange (empty_mopy_Buffer_queue).
Diese Puffer werden aus einer Warteschlange entnommen, mit Auftragsdaten
von der Spooldatei auf einer Platte gefüllt und an die Persönlichkeit 109 weitergegeben.
-
Die
Firmware 107 führt
eine Zuweisung und Initialisierung von 2048-Byte-Puffern durch,
indem sie die Funktion Weise_Mopie_Puffer()_zu (allocate_mopy_buffer())
in der Funktion Intialisiere_Aufgabe() (init_task()) der IOP-Aufgabe aufruft.
Die Intialisiere_Aufgabe()-Prozedur wird aufgerufen, wenn das Betriebssystem
die IOP-Aufgabe initialisiert. Die Funktion Weise_Mopie_Puffer()_zu erstellt
Anforderungspuffer zur Verwendung durch die Zustandmaschine 110.
Alle Anforderungspuffer bestehen zwei Teilen, die durch zwei separate
Anrufe an ZUWEIS8-MARKIERT (ALLOC8-TAGGED) gebildet sind. ALLOC8
ist eine spezialisierte Form der generischen alloc()-Speicherpoolanforderungsfunktion.
Der erste Teil, der Abschnitt des umlaufenden Systempuffers (rsb – recirculating
system Buffer) ist eine Anzahl von Feldern, die durch das nachrichtenbasierte
Betriebssystem verwendet werden. Dieser Puffer weist die Form eines
vordefinierten Anfangsblocks auf, der in der gesamten Firmware für verschiedene
generische I/O-Anwendungen verwendet wird. Der zweite Puffer ist
ein 2048-Byte-Speicherabschnitt, der zum Puffer ist ein 2048-Byte-Speicherabschnitt,
der zum Halten tatsächlicher
Druckauftragsdaten verwendet wird. Die Adresse des 2048-Byte-Puffers
und seine Länge
werden in die korrekten Felder des rsb-Puffers plaziert.
-
Die
Firmware 107 initialisiert während der Druckerselbsttestprozedur
Platten-I/O-Teilsystem-Operationen. Die IOP-Aufgabe tritt in diese Phase ein, wenn
sie von dem Betriebssystem eine Nachricht opOS_SELF_TEST (BETRIEBSSYSTEM_SELBST_TEST)
empfängt. Zum
Initialisieren wird die Funktion init_mopy() aufgerufen. Die Funktion
init_mopy() stellt globale Variablen ein, baut einen Spooldateinamen
auf und öffnet die
Datei auf der Platte zum Schreiben. Diese Routinen bilden innerhalb
des IOP-Prozesses
zwei getrennte Abschnitte. Diese bestehen aus Schreib- und Leseabschnitten.
Der Schreibabschnitt, der in der Routine "Schreibe_Puffer" ("write_buffer") implementiert ist,
geht immer davon aus, daß sich
der Drucker in einem "normalen", Nicht-Mopie-Zustand
befindet, was bedeutet, daß nur
reguläre
Aufträge
an die ausgewählte
Persönlichkeit
gesandt und verarbeitet werden. Dies wird validiert, indem die globale
Variable Mopiequantität
(MopyQTY) geprüft
wird. Wenn diese Variable Null ist, parst der Schreibabschnitt das
ankommende Paket bezüglich
des Befehls @PJL_JOB_QTY = x. Ein Parsen wird bewerkstelligt, in
dem Suche_nach_MS_QTY() (look_for_MS_QTY()) aufgerufen wird. MopyQTY wird
dann zu x – 1,
falls Suche_nach_MS_QTY() einen Befehl @PJL_JOB_QTY = x gefunden
hat. Falls MopyQTY nun größer als
oder gleich 2 ist, beginnt der Schreibabschnitt, eine Prüfung bezüglich UEL (Universal
End of Language) durchzuführen,
falls es nicht bereits gefunden wurde. UEL wird gesucht, indem der
Puffer geparst wird, indem die Funktion Suche_nach_MS_UEL() (look_for_MS_UEL())
aufgerufen wird.
-
Der
Schreibabschnitt geht von drei allgemeinen Zuständen aus:
- (1)
MopyQTY = = 0: Puffer sind nicht vom Mopie-Typ. Parse jeden Puffer
bezüglich
eines Befehls @PJL_JOB_QTY = x;
- (2) MopyQTY = = 1: Auftrag geschrieben, dann gelöscht. Dies
ist eine suboptimale anfängliche Auswahl
und wird nicht empfohlen; und
- (3) MopyQTY > =
2: Puffer sind vom Mopietyp. Rufe Zustandsmaschine auf, um jeden
Puffer zu Datei auf Platte zu kopieren. Suche nach UEL.
-
Falls
ein Puffer zuvor auf eine Platte kopiert wurde und zurückkehrt,
um "erneut gekocht" zu werden, d. h.
daß er
bereits teilweise verarbeitet wurde, darf er einfach durchlaufen,
ohne daß eine
Kopiehandlung unternommen wird. Dies ist ein Ergebnis dessen, daß der Puffer
als reine PCL-Entität zurückkehrt,
nachdem PJL-Befehle herausgezogen wurden.
-
Der
Leseabschnitt prüft
zunächst
den Warteschlangenkopf SB_lies_Puffer_Warteschlange[2] (SG_read_buffer_queues[2]),
um zu testen, ob ein Puffer vorliegt. Falls ein Puffer vorliegt,
wird eine LIES_BESTÄTIGUNGS_NACHRICHT (READ_ACK_MESSAGE)
an die Persönlichkeit 109 gesandt.
Falls kein Puffer vorliegt und das System Mopien verarbeitet, z.
B. MopyQTY > 1, und
der Dateisystemzustand OK_ZU_LESEN (OK_TO_READ) ist, dann beginnt
die Mopieleseverarbeitung. Ein Mopiepuffer wird aus der G_leere_Mopie_Puffer_Warteschlange (G_empty_mopy_buffer_queue)
entnommen und mit einer Anfangszustandsanforderung FS_DATEI_LESEN
(FS_FILE_READ) an die Dateisystemzustandsmaschine transferiert.
Dies setzt die Zustandsmaschine 110 in Gang, die sich ständig selbst
aufruft, um zusätzliche
Zustände
abzuschließen,
bis die gesamte Mopiedatei auf der Platte "n–1" Male gedruckt wird.
-
Der
verbleibende Code ist in der Zustandsmaschine 110 enthalten.
Eine Zustandsmaschine wurde aufgrund der Beschaffenheit des Dateisystembetriebs
verwendet. Das Betriebssystem unterstützt auch einen asynchronen
Zustandsbetrieb aufgrund seiner Nachrichtenweiterleitungsbeschaffenheit. Üblicherweise
empfängt
die IOP-Aufgabe viele Nachrichten. In dem IOP.C-Code befindet sich
eine Funktion, die als iop_Aufgabe (iop_task()) bezeichnet wird.
Sie enthält
eine Liste von Nachrichten, für
die die Funktionen in der IOP-Aufgabe
verantwortlich sind. Die Erfindung modifiziert diese Liste von Nachrichten,
um "opFS_ACTION" zu umfassen. Diese Nachricht
ermöglicht
es dem Dateisystem, die IOP-Aufgabe
zu benachrichtigen, daß es
Fehler- oder Statusinformationen von dem Dateisystem zu berichten
gibt. Jedesmal, wenn das Dateisystem aufgerufen wird, kehrt es schließlich mit
der Nachricht "opFS_ACTION" zu der IOP-Aufgabe zurück. Dies wird über eine
große
Fallaussage implementiert. Der Abschnitt "opFS_ACTION" ruft den Zustandsmaschineneintrittspunkt
Platten_io_Anforderung() (Disk_io_request()), was ähnlich ist,
da auch er eine Liste von Fällen
für plattenbezogene
Operationen aufweist. Jeder Fall wird auf einen Dateisystemrückkehrstatuscode
abgebildet. Jeder Statuscode kann einen optionalen Fehlercode aufweisen,
der auftreten kann, aber nicht muß. Die Zustandsmaschine folgt
der Zustandsübergangsvariable
Mopie Zustand (mopy_state). Alle Zustände sind durch das Dateisystem
definierte Dateisystemoperationen. 9 ist ein
grundlegendes Flußdiagramm
für die
Zustandsmaschine 110.
-
Weitere
Ausführungsbeispiele
und Modifikationen umfassen eine Verwendung von schnelleren Plattenlaufwerken,
Flash-RAM, SRAM
oder ähnlichen
Vorrichtungen, um zu ermöglichen,
daß Mopieaufträge gespeichert
werden, bevor sie wiedergegeben wurden, so daß sie anschließend direkt
der Druckmaschine zugeführt
werden können.
-
Obwohl
das bevorzugte Ausführungsbeispiel der
Erfindung unter Bezugnahme auf einen Laserdrucker als spezifische
Bild erzeugungsvorrichtung und auf einen Personal-Computer als eine
spezifische Dokumenterstellungsvorrichtung beschrieben wurde, sollte
man deutlich verstehen, daß die
Erfindung nicht hierauf beschränkt
sein soll, da die Erfindung gleichermaßen auf andere Bilderzeugungsvorrichtungen
und Dokumenterstellungsvorrichtungen mit oder ohne Modifizierung
anwendbar ist. Man wird deshalb verstehen, daß Modifikationen und Variationen
möglich
sind, ohne von dem Schutzumfang der Erfindung, wie er in den folgenden
Patentansprüchen Ausdruck
findet, abzuweichen.