TCP/IP-Socket-Interface

Wenn Sie die Druckerverbindungen bestätigt haben und Ihre Etiketten wie erwartet ausgedruckt werden, können Sie zum TCP/IP-Socket-Interface wechseln.  Das TCP/IP-Socket-Interface ist ein synchrones Interface des LPS, das die Eingabe eines Druckauftrags, Bestätigung eines Druckauftrags und jegliche auf einen Druckauftrag bezogene Verzögerungen oder Fehler erlaubt. Es ist zuverlässiger und informativer als Dateiübertragungs- oder ‘Einfügungs’-Lösungen und gibt Ihnen mehr Kontrolle im Anpassungsverfahren.

Das TCP/IP-Socket wurde für diejenigen Rechnerumgebungen entwickelt, die die ActiveX- oder Datei-Interfaces nicht verwenden können.  Beispiel: Wenn sich Ihre Anwendung auf einer UNIX- oder AS400-Plattform auf Ihrem Netzwerk befindet, aber Sie möchten nicht die Dateiübertragungsprotokollmethode oder freigegebene Verzeichnismethode verwenden, können Sie wahlweise direkt mit dem LPS über sein Socket-Interface kommunizieren.  Der LPS wird mit einem in Berkley-konformem ‘C’ geschriebenen Beispielprogramm geliefert, das dies demonstriert.

LPSSend

Das oben beschriebene Beispielprogramm heißt LPSSend. Es zeigt, wie man über ein Socket mit dem LPS verbindet und wird mit komplettem Quellcode geliefert. Um etwas über Socketverbindungen zu erfahren, führt man am Besten dieses Beispielprogramm aus.  Anmerkung: Dieser Abschnitt ist für fortgeschrittene Benutzer und setzt Kenntnisse der Terminologie und Verwendung von Befehlseingaben und Programmieren voraus. Ein LPSSend_AD.doc benanntes Dokument enthält zusätzliche Beispiele und Beispielcodeinformationen und befindet sich im unten genannten Verzeichnis.

LPSSend.exe und seine Quelldateien befinden sich im Verzeichnis: C:\Programme\Loftware Labeling\Sample Programs\TCPIPtoLPS_Request.

LPSSend-Dateien

lpssend.cpp ist der eigentliche Code und die Ausführung von lpssend. Es ist in Berkley-konformem C kodiert, obwohl es eine .cpp-Erweiterung hat. Wenn Sie den Code hinter lpssend sehen möchten, öffnen Sie sie in Microsoft Visual Studio v6© oder einem anderen Code-Compiler.  Anmerkung: Wenn Sie Visual Studio 6 nicht besitzen, können Sie die .cpp- und .h-Dateien in einer Umgebung Ihrer Wahl verwenden.

Die drei .h-Dateien - sind die Header-Dateien für das lpssend-Projekt. Sie sind erforderlich zum erfolgreichen Bau von lpssend.

Die .dsp-Datei - ist die lpssend-Projektdatei zur Verwendung mit Microsoft Visual Studio.

Die .dsw-Datei - ist der lpssend-Arbeitsbereich zur Verwendung mit Microsoft Visual Studio, die sowohl den lps .dsp-Schutz, als auch die externen Abhängigkeiten (.h-Dateien) enthält

Die .exe-Datei - ist die lpssend-Ausführung.

Die folgenden Schritte wurden erstellt, um Ihnen einen Einblick in die Arbeitsweise von LPSSend zu geben. Ein großer Teil des Codes in LPSSend kann von Ihrer eigenen Anwendung wiederverwendet werden. Nehmen Sie sich bitte etwas Zeit um zu verstehen, wie LPSSend funktioniert. Nachdem Sie die Schritte vollständig verstanden haben, können Sie die Teile, die Sie brauchen ” ausschneiden” und sie in Ihren eigenen Code “einfügen”. 

Wichtige Anmerkung: Denken Sie daran, dass das Socket-Interface des LPS synchron ist. Ihr Programm MUSS IMMER auf eine Bestätigungsantwort vom LPS WARTEN bevor es fortfährt! Dies gilt für An- und Abmeldung und Druckanfragen

Schritt 1.LPS-Adresse erhalten
Der erste Schritt von LPSSend ist es, die Argumente oder Parameter der Befehlseingabeaufforderung zu lesen. Sobald die Parameter gelesen wurden, verwendet LPSSend die gelieferte IP-Adresse und Schnittstelle um eine Socket-Verbindung mit dem LPS herzustellen. In Ihrem Programm können diese Werte aus Hard-Code bestehen oder es bezieht sie von einer anderen Stelle.

Schritt 2. Melden Sie sich bei LPS an
Sobald LPSSend bestimmt, dass es eine Socketverbindung geöffnet hat, wird eine Anmeldungsanfrage geschickt. LPSSend schickt den Computernamen, Benutzernamen und Versionsnummer an den LPS der eine Anmeldung anfordert. Das eigentliche Protokoll, das zur Anfrage dieser Anmeldung verwendet wird, wird auch geschickt. Der Code ist: REQ_LPSLOGIN.

Schritt 3. Warten Sie auf Anmeldebestätigung
Nachdem die Anmeldeanfrage geschickt wurde, wartet LPSSend auf eine Antwort vom LPS. Der LPS sendet einen anderen Protokollbefehl zurück zum LPSSend-Clienten: RSP_LPSLOGIN. LPSSend wurde erfolgreich am LPS angemeldet.

Schritt 4. Druckanfrage vorbereiten
Wenn LPSSend angemeldet ist, bereitet er die Druckauftragsanfrage vor. LPSSend erstellt einen Puffer, der groß genug ist, die in den Befehlseingabeaufforderungsparametern angegebene pas- ,csv- oder xml-Datei zu speichern. Die Datei wird in den Puffer eingelesen und mit der Druckernummer oder dem Druckeralias, Auftragstypen (pas, csv or xml), Auftragsnamen (falls angegeben) und dem Protokollsbefehl: REQ_SNDJOB verpackt.

Schritt 5. Druckanfrage senden, Antwort abwarten
Wenn ein Druckauftrag an den LPS geschickt wurde, wartet LPSSend darauf, dass der LPS die Ausführung des Auftrag beendet und eine Antwort zurückschickt. Der LPS schickt den Protokollbefehl RSP_JOBUPDATES zusammen mit extra Daten über den Auftrag. Die vier möglichen Antworten auf einen Auftrag sind:  1.) Kritische Fehler, 2.) Gedruckt, 3.) Gedruckt mit Fehlern und 4.) Druckerfehler. LPSSend zeigt diese Information an, damit der Benutzer den Status des geschickten Auftrags bestätigen kann. Ihr Programm sollte die Antworten in einer angemessenen Weise handhaben.Anmerkung: Wiederholen Sie Schritte 4 und 5 sooft wie nötig ohne sich abzumelden.

Schritt 6. Abmeldeanfrage.
Sobald der LPSSend-Auftrag gesendet und bearbeitet wurde, meldet sich LPSSend vom LPS ab, indem es den Protokollbefehl: REQ_LOGOUT verwendet.

Schritt 7. Warten Sie auf Abmeldebestätigung
 Nachdem die Abmeldeanfrage geschickt wurde, wartet LPSSend auf eine Antwort vom LPS. LPSSend schickt den Protokollbefehl RSP_LOGOUT zurück.

Schritt 8. Ende
Sobald LPSSend die Antwort auf die Abmeldeanfrage erhalten hat, schließt LPSSend die Socket-Verbindung und gibt den Puffer, der für die Druckauftragsanfrage zugewiesen war, frei.

Verwendung von LPSSend

LPSSend.exe ist ein Musterprogramm, das alle für TCP/IP-Verbindungen benötigten Dokumentationen enthält.Sie können LPSSend dazu verwenden, über Socket-Verbindungen zu lernen.Die Ausführung von LPSSend ist eine gute Methode, die Verbindungen zu testen; Loftware empfiehlt dringend, dass Sie eine einfache Datei erstellen um dies zu tun.
Führen Sie LPSSend von einem Befehlsfenster mit den folgenden Informationen als Argumente aus:

LPSSend Adresse -pSchnittstelle [2723] -tAuftragstyp [0]
-nDruckernummer |-aDruckeralias -jAuftragsname –fAuftragsdatei
(Die Zahlen in eckigen Klammern [] sind Standardwerte.)

Optionen:

Adresse

Geben Sie die LPSSend-IP-Adresse an

-p

Geben Sie die Schnittstelle an (Standardeinstellung: 2723)

-t:

Auftragstyp

-t0

Pass-Datei (Standardeinstellung)

-t1

CSV-Datei

-t2

XML-Datei

-n

Loftware-Druckernummer

-a

Loftware-Druckeralias (Entweder Nummer oder Alias wird geschickt)

-j

Auftragsname Name des Auftrags

-f

Dateiname des zu schickenden Auftrags (mit Pfad)

-r

(An sich) Zeigt ein Diagramm der Return-Code-Werte an

-h

(An sich) Zeigt diese Hilfe an (auch durch -? angezeigt)

-l

Anmeldetyp  [0] Standardeinstellung - nur angemeldet, noch keine Anfrage erstellt

 

                  -l1  - Anmeldung, Auftragsanfrage schicken, auf Status warten

 

                  -l2  - - Anmeldung, Auftragsanfrage schicken, nicht auf Status warten

Verwendungsbeispiel von LPSSend

Beispiel 1: lpssend 172.16.0.64 -n1 –fTest_Label.pas -
Dieses Beispiel schickt die Datei Test-Etikett.pas, die sich in demselben Verzeichnis befindet wie lpssend.exe, an die IP-Adresse 172.16.0.64 mit der Standardschnittstelle 2723 und dem Standardauftragstyp 0 (.pas file) auf Drucker 1 gedruckt.

Beispiel 2: lpssend 172.16.0.64 -t1 -n2 –f “C:\Programme\Loftware Labeling\Batch\Test-Etikett.csv” - Das oben genannte Beispiel schickt die Datei Test-Etikett.csv file, die sich im Stapelverzeichnis Loftware Labeling befindet, an die IP-Adresse 172.16.0.64 mit der Standardschnittstelle 2723 und einem Auftragstyp 1 (.csv file) auf Drucker 2 gedruckt.

LPSSend-Etikettenbeispiel

Für dieses Beispiel wird die Test-Etikett.pas (oben in dieser Lernhilfe erstellt) genannte .pas-Datei in dem Verzeichnis TCPIPtoLPS_Request gespeichert. (Wenn Ihr Programm eine .pas-Datei im Speicher erstellt, vergessen Sie nicht das <CR> <LF> am Ende jeder Zeile!)

*FORMAT,Test-Etikett.lwl

*JOBNAME,SampleJob001

*QUANTITY,1

*PRINTERNUMBER,1

 FIRMENNAME,Amicale Amateurs d’ Alpine

 ADRESSE_1,le Grand Bleu

 ADRESSE_2,182 rte St. Antoine de Ginestière

 STADT,Nice

 BUNDESLAND_PROVINZ,Alsace

 POSTLEITZAHL,06200

 LAND,FRA

 TEILENUMMER,52D-400

*PRINTLABEL

Anmerkung: Wenn sich die Datei in einem anderen Verzeichnis als TCPIPtoLPS_Request befindet, müssen Sie den vollständigen Pfad zu dem Verzeichnis angeben. (Beispiel: C:\Programme\Loftware Labeling\Batch\lwlabel.pas)

Das Befehlsfenster zeigt die Ergebnisse des LPSSend-Beispiels an.

Das oben angeforderte Etikett wird wie unten gezeigt ausgedruckt:

Abbildung 6-E: Vollständiges Etikett unter Verwendung von LPSSend

LPSSend-Return-Codes

LPSSend schickt am Ende der Ausführung einen Code zurück. Das folgende Diagramm erklärt ihre Bedeutung:

Return-Codes für Main:

100's: ALLGEMEINE MAIN-EXITS

101: Return-Codes anzeigen

102: Argumente anzeigen

103: Ungültige Argumente

104: Fehlende Argumente

105: Dateiname oder Pfad wurden nicht gefunden

200's: SOCKET-FEHLER

201: Fehler beim Senden der Anmeldeanfrage

202: Fehler beim Empfangen der Anmeldeantwort

203: Fehler beim Senden der Druckauftragsanfrage

204: Fehler beim Empfangen der Druckauftragsantwort

205: Fehler beim Senden der Abmeldeanfrage

206: Fehler beim Empfangen der Abmeldeantwort

300's: DATEN AUSSERHALB DES RAHMENS EMPFANGEN ("MAGIC NUMBER")

301: Anmeldeantwort empfangen

302: Druckauftragsantwort empfangen

303: Abmeldeantwort empfangen

400's: FEHLER

401: Öffnen des Servers war fehlerhaft

402: Anmeldung fehlerhaft

403: Druckauftrag fehlerhaft

404: Abmeldung fehlerhaft

500's: ENDE VON HAUPT (STATUS DES AUFTRAGS)

501 Kritischer Fehler

502: Gedruckt

503: Mit Fehlern gedruckt

504: Druckerfehler

Ende der Hauptrücksendungen 0 (sollte niemals vorkommen)