[PHP] Kassensysteme und EscPos

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Arolo_wurzel, 19. November 2009 .

  1. 19. November 2009
    Kassensysteme und EscPos

    Alles zu Problemen zur Ansteuerung von Bondruckern und Kassenschubladen
    1. per serieller schnittstelle aus php heraus.
    2. über den allseits beliebten und hochverbreiteten ESC-Pos Standard.
    3. über usb und emulation

    Zur Umgebung:

    der drucker TSP 100 von Star micronics macht nicht was er soll.

    ich schreibe gerade einen "Treiber" in php für eine kleine Kassenanwendung in php.
    die Kasse steht bei einem freund im kiosk und hat eine eigenentwickelte kassensoftware.
    es soll nun ein bondrucker angeschlossen werden.

    die bondrucker arbeiten mit einer emulation einer seriellen schnittstelle über die sie angesprochen werden.

    die serielle schnittstelle lässt sich von php aus gut ansprechen.
    die befehle sind escapte asci steuerzeichen.

    Andrucken und Formatieren klappt sehr gut und zuverlässig.
    80% des con epson dokumentierten standards habe ich schon in oop-classen implementiert
    ( mit designs und multilangual texten, 20 ascii zeichensätzen, .....)

    so, nun zum eigendlichen Problem:
    mein freund wollte nun auch barcodes angedruckt haben was nach esc pos über eigene schriftarten geregelt ist.

    das eigendliche problem ist das der drucker die steuerzeichen andruckt und den barcode in normalen Zahlen (ohne strichcode) ausgiebt.

    ein drucken ders Barcodes über gtk als bild und senden an den drucker ist nicht gewollt, da

    1. sich bilder nur schlecht über die serielle schnittstelle senden lassen
    2. die formatierung über den starline treiber grotte ist (barcodes vom scanner nicht lesbar)
    2. ich kompatibel zum escpos standard bleiben wollte.(man weiss nie welcher drucker kommt
    wennd er mal kaput geht)
    3. ich die bons als txtdatei speichen können muss.


    codebeispile und ref manuals kann ich gleich noch an den post anhängen.

    vielen dank im Vorraus.


    urls:
    http://www.posprint.ru/pdf/escpos.pdf

    Kapitel R seite R83


    codestrings:
    printer initialisierung auf codepage 850

    esc @
    esc !

    strings für ean13 barcode

    ascii:
    initstring:
    chr(27).chr(40).chr(65). chr(19).chr(00).chr(00).chr(02).chr(00).chr(125).chr(0).<barcodedaten 13 stellen numerisch>
    barcodedaten :
    chr(48).chr(52).chr(57).chr(52).chr(48)..chr(53).chr(53).chr(53).chr(54).chr(52).chr(57).chr(55).chr(48)

    auf hex:
    initstring: 1B 28 42 13 00 00 02 00 7D 00 00 <barcodedaten 13 stellen numerisch>
    barcodedaten: 30 34 39 34 30 35 35 35 36 34 39 37 31



    in klartext:
    initstring : esc(8 19 0 2 0 0 } <barcodedaten 13 stellen numerisch>
    barcodedaten: 0494055564971

    Frage wo ist der fehler??
     
  2. 19. November 2009
    AW: Kassensysteme und EscPos

    sorry, was?

    du schmeisst hier eben ein paar informationen rein die du in den letzen monaten gesammelt hast und erwartest jetzt das user hier auf anhieb durchblicken und dir helfen?

    ein großteil hier hat vermutlich noch nie mit ner COM schnittstelle gearbeitet ^^ (bzw. weiß was das sein soll).

    warum muss das den mit php gemacht werden? ich blick das selber nicht ganz...

    quellcode?
     
  3. 19. November 2009
    AW: Kassensysteme und EscPos

    Hallo murdoc,

    die Kassenanwendung ist webbasierend.
    deshalb php.
    da sie von einem zentralen server im intranet läuft ist sie webbasierend mit php mysql und ajax erstellt.
    da die bondrucker über einen standard zur ansteuerung verfügen (esc pos : escaped script code 4 point of salesystems) verwende ich den standard.

    zum code:
    der fertige string wird einfach mit fopen() und fwrite() auf einen port ausgegeben. hier "com5" oder "stty4".

    mit den chr("<x>") befehl wird ein ascizeichen erzeugt. ascii tabellen sind die alten dos zeichensätze.
    auch codepages genannt. also codepage 850 ist ascizeichensatz 850.

    die bestehen aus 256 zeichen, in denen das alphabet in gross und kleinschreibung steht adressiert über zeilen 00- 0f und spalten 00-f0 in hex zu adressieren.
    spalte 70 und zeile 0d ergiebt wert 7d (addition) und dann das ascizeichen 125 also in codepage 850 das Zeichen }.
    die notation mit chr(<x>) wird gebraucht um die zeichen die nicht direckt im alphabet liegen oder steuerzeichen wie newline, formfeed, o.ä. sind schreiben und umsetzen zu können.

    in der regel wird also ein string erzeugt der mit ESC (ESCAPE) dem ersten steuersignal
    z.B. "(8" zur auswahl der befehlsart sowie weiteren parametern und nutzdaten erzeugt.

    dieser string wird dann an den drucker gesandt (eigendlich egal wie das geschied) und der string wird/soll dann vom drucker in steuerteichen (nichtdruckbare zeichen) und nutzdaten (druckbare zeichen) zerlegt und gedruckt.

    dies geschied zeilenweise, also für jede zeile wird ein string erzeugt und mit CR "enter" chr(13) an den drucker gesendet.

    dieser weiss dann das er ne zeile drucken muss und setzt das um.

    mein problem ist nun das ich aus der doku zur werzeugung des string nicht ganz schlau werde und mich der druckwer seit nunmehr 3 tagen verarscht.

    ich hatte gehofft das hier jemand ist der im umgang mit php bewandert ist (professionel) und ggf schonmal mit dem escpos standard zu tun hatte ( nicht ungewöhnlich, es giebt da einige die nicht nur ne website für das eigene ego basteln) siehe auftragsthread.

    mir sind aus dem rr-ug bereich auch ein paar helle köpfe bekannt die mich mal hier hin verwiesen haben.

    störe dich nicht an meiner rep,
    habe mich erst gestern dazu entschlossen mich mal in diesem board zu registrieren.
    habe nebenbei auch schon ein paar Hilfe-posts im Netzwerkthread gemacht .
    ich will ja keine hilfe ohne anderen helfen zu können.


    wenn die Frage für das Board etwas zu speziell ist dann tut es mir Lied und ich werde mal schauen ob es da nicht andere Foren mit echten experten in dem bereich giebt.

    mfg. und nichts für ungut.

    p.s. bin kurz davor den Drucker im kanal neben mit zu versenken :angry:

    dachte wie gesagt ich könnte hier glück haben.

    zu anderen Fragen in diesem Bereich stehe ich gerne mit tips und Hilfe zur verfügung.
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.