Re: bondrucker epson tm-t88v
Verfasst: 16.12.2015 01:35
klingt nicht schlecht, kannst du mir das etwas anschaulicher erklären?
ich habe jetzt zwei tage um die ohren gehauen und mich durch die dokumentation von epson durchgearbeitet und habe das ganze auch zum laufen gebracht, auch wenn nicht wirklich so, wie ich es wollte.
nun ja, entweder ich bin blöd oder die epson doku ist richtig schlecht dokumentiert und ich gehe davon aus das irgendwie die verschiedenen befehle in einer bestimmten wahrscheinlich kombination wirksam werden.
auf jeden fall haben die meisten befehle, egal wie ich es hin und her gedreht habe, nicht funktioniert. nicht mal die, die angeblich für diesen drucker sind. ich habe es immerhin hinbekommen, die schrift in verschiedenen varianten sauber dazustellen und habe linksbündigkeit, rechtsbündig und zentrierung manuell per funktion programmiert.
es läuft jetzt. dein ansatz ist cool, würde ich gerne machen. und wenn ich wüste wie ich die scheiß befehle wirksam machen kann, würde ich wohl besser resultate erzielen. aber ohne konkrete beispiele die funktionieren, fehlt mir jetzt der letzte nerv.
ich habe jetzt zwei tage um die ohren gehauen und mich durch die dokumentation von epson durchgearbeitet und habe das ganze auch zum laufen gebracht, auch wenn nicht wirklich so, wie ich es wollte.
nun ja, entweder ich bin blöd oder die epson doku ist richtig schlecht dokumentiert und ich gehe davon aus das irgendwie die verschiedenen befehle in einer bestimmten wahrscheinlich kombination wirksam werden.
auf jeden fall haben die meisten befehle, egal wie ich es hin und her gedreht habe, nicht funktioniert. nicht mal die, die angeblich für diesen drucker sind. ich habe es immerhin hinbekommen, die schrift in verschiedenen varianten sauber dazustellen und habe linksbündigkeit, rechtsbündig und zentrierung manuell per funktion programmiert.
es läuft jetzt. dein ansatz ist cool, würde ich gerne machen. und wenn ich wüste wie ich die scheiß befehle wirksam machen kann, würde ich wohl besser resultate erzielen. aber ohne konkrete beispiele die funktionieren, fehlt mir jetzt der letzte nerv.
Code: Alles auswählen
Enumeration
#schrift_normal
#schrift_winzig
#schrift_dick_klein
#schrift_dick_gross
#schrift_dick_linie
; ***
#schrift_linksbundig
#schrift_zentriert
#schrift_rechtsbundig
#schrift_teilen
EndEnumeration
Global Dim schrift.s(16)
Procedure.s bon_tabs( schriftg.a, zeichenfolge.s, len1.l = 10, len2.l = 0, len3.l = 10 )
Define tt.s = "", text.s = "", textstrom.s = zeichenfolge
Define sc.s = "", zm.w = 0
textstrom = ReplaceString( textstrom, "Ü", "U" )
textstrom = ReplaceString( textstrom, "ü", "u" )
textstrom = ReplaceString( textstrom, "Ö", "O" )
textstrom = ReplaceString( textstrom, "ö", "o" )
textstrom = ReplaceString( textstrom, "Ä", "A" )
textstrom = ReplaceString( textstrom, "ä", "a" )
textstrom = ReplaceString( textstrom, "ß", "ss" )
textstrom + Chr(9)
Select schriftg
Case #schrift_normal
sc = Chr($1B) + "!" + Chr(32)
zm = Len("EEeeFFggHHhhJiJiKKllWwWWW QWA")
Case #schrift_winzig
sc = Chr($1B) + "!" + Chr(145)
zm = Len("DDDWDDDADDDQDDDWDDDdDDDEdddFDDDmDDDHDDDTDDD DDxDDDWWwwPDDDA")
Case #schrift_dick_klein
sc = Chr($1B) + "!" + Chr(24)
zm = Len("DDDWDDDADDDQDDDWDDDdDDDEdddFDDDmDDDHDDDTDDD DDxDDDWWwwPDDDD")
Case #schrift_dick_gross
sc = Chr($1B) + "!" + Chr(40)
zm = Len("FFddQQeWEWPORTZTR RTFERFay039")
Case #schrift_dick_linie
sc = Chr($1B) + "!" + Chr(177)
zm = Len("FFddQQeWEWPORTZTR RTFERFay039nk ERG")
EndSelect
Define z1.s = "", z2.s = "", z3.s = "", zz.a = 0
For p = 1 To Len(textstrom)
Select Mid( textstrom, p, 1 )
Case Chr(9)
zz + 1
Default
Select zz
Case 0 : z1 + Mid( textstrom, p, 1 )
Case 1 : z2 + Mid( textstrom, p, 1 )
Case 2 : z3 + Mid( textstrom, p, 1 )
EndSelect
EndSelect
Next
Select len1
Case 0 ; Nix tun, so belassen wie es ist
Default
If Len(z1) > len1
z1 = Mid( z1, 1, len1 )
ElseIf Len(z1) < len1
zr = len1 - Len(z1)
; ***
For g = 1 To zr
z1 + " "
Next
EndIf
EndSelect
Select len2
Case 0 ; Nix tun, so belassen wie es ist
Default
If Len(z2) > len2
z2 = Mid( z2, 1, len2 )
ElseIf Len(z2) < len2
zr = len2 - Len(z2)
; ***
For g = 1 To zr
z2 + " "
Next
EndIf
EndSelect
Select len3
Case 0 ; Nix tun, so belassen wie es ist
Default
;If Len(z3) > len3
; z3 = Mid( z3, 1, len3 )
;ElseIf Len(z3) < len3
; zr = len3 - Len(z3)
; ; ***
; For g = 1 To zr
; z3 + " "
; Next
;EndIf
EndSelect
z3 = Trim(z3)
len3 = Len(z3)
cc = zm - Len(z1) - Len(z2) - Len(z3) - 4 ; Die vier um jeweils 2 Leerzeichen zwicshen den Feldern zu legen
If cc = 0
ProcedureReturn sc + z1 + " " + z2 + " " + z3 + Chr(10)
ElseIf cc > 0
text + z1 + " " + z2
; ***
cc = zm - Len(z1) - Len(z2) - 2 - Len(z3)
; ***
For p = 1 To cc
text + " "
Next
; ***
text + " " + z3
; ***
ProcedureReturn sc + text + Chr(10)
ElseIf cc < 0
If len1 = 0
For p = 1 To Len(z1)
cc = Len(Mid( z1, 1, p ) + " " + z2 + " " + z3) - zm
; ***
If cc = 1
text + sc + Trim(Mid( z1, 1, p )) + " " + z2 + " " + z3 + Chr(10)
text + sc + Trim(Mid( z1, p + 1 )) + Chr(10)
; ***
Break
EndIf
Next
ElseIf len2 = 0
For p = 1 To Len(z2)
cc = Len(z1 + " " + Mid( z2, 1, p ) + z3) - zm
; ***
If cc = 0
text + sc
; ***
tt = Trim(z1 + " " + Trim(Mid( z2, 1, p - 1 )))
; ***
If Len(tt) + Len(z3) + Len(" ") < zm
For g = 1 To zm - (Len(tt) + Len(z3) + Len(" "))
tt + " "
Next
EndIf
; ***
text + tt + " " + z3
; ***
text + Chr(10) + sc
; ***
For g = 1 To Len(z1)
text + " "
Next
; ***
text + " "
text + Trim(Mid( z2, p )) + Chr(10)
; ***
Break
EndIf
Next
EndIf
; ***
ProcedureReturn text
EndIf
EndProcedure
Procedure.s bon_text( schriftg.a, zeichenfolge.s, ausrichtung.a = #schrift_linksbundig )
Define tt.s = "", text.s = "", textstrom.s = zeichenfolge
Define sc.s = "", zm.w = 0
textstrom = ReplaceString( textstrom, "Ü", "U" )
textstrom = ReplaceString( textstrom, "ü", "u" )
textstrom = ReplaceString( textstrom, "Ö", "O" )
textstrom = ReplaceString( textstrom, "ö", "o" )
textstrom = ReplaceString( textstrom, "Ä", "A" )
textstrom = ReplaceString( textstrom, "ä", "a" )
textstrom = ReplaceString( textstrom, "ß", "ss" )
Select schriftg
Case #schrift_normal
sc = Chr($1B) + "!" + Chr(32)
zm = Len("EEeeFFggHHhhJiJiKKllWwWWW QWA")
Case #schrift_winzig
sc = Chr($1B) + "!" + Chr(145)
zm = Len("DDDWDDDADDDQDDDWDDDdDDDEdddFDDDmDDDHDDDTDDD DDxDDDWWwwPDDDA")
Case #schrift_dick_klein
sc = Chr($1B) + "!" + Chr(24)
zm = Len("DDDWDDDADDDQDDDWDDDdDDDEdddFDDDmDDDHDDDTDDD DDxDDDWWwwPDDDD")
Case #schrift_dick_gross
sc = Chr($1B) + "!" + Chr(40)
zm = Len("FFddQQeWEWPORTZTR RTFERFay039")
Case #schrift_dick_linie
sc = Chr($1B) + "!" + Chr(177)
zm = Len("FFddQQeWEWPORTZTR RTFERFay039nk ERG")
EndSelect
Select Mid( textstrom, 1, 1 )
Case "\"
For p = 1 To zm
Select Mid( textstrom, 2, 1 )
Case "-" : text + "-"
Case "_" : text + "_"
Case "=" : text + "="
Case "#" : text + "#"
Case "*" : text + "*"
Case "+" : text + "+"
Case "~" : text + "~"
EndSelect
Next
Default
Select ausrichtung
Case #schrift_teilen
lf$ = "" : rg$ = "" : ca.a = 0
; ***
For p = 1 To Len(textstrom)
If Mid( textstrom, p, 1 ) = Chr(9)
Break
EndIf
; ***
lf$ + Mid( textstrom, p, 1 )
Next
; ***
For p = 1 To Len(textstrom)
If ca = 1
rg$ + Mid( textstrom, p, 1 )
EndIf
; ***
If Mid( textstrom, p, 1 ) = Chr(9)
ca = 1
EndIf
Next
; ***
lf$ = Trim(lf$)
rg$ = Trim(rg$)
; ***
ll = zm - Len(lf$) - Len(rg$)
; ***
text + lf$
; ***
For p = 1 To ll
text + " "
Next
; ***
text + rg$
Case #schrift_linksbundig
text = textstrom
Case #schrift_zentriert
ll = Len(textstrom)
; ***
cc = zm - ll
; ***
If cc <= 1
text = textstrom
Else
cc / 2
; ***
If cc <= 0
text = textstrom
Else
For m = 1 To cc
text + " "
Next
; ***
text + textstrom
EndIf
EndIf
Case #schrift_rechtsbundig
ll = Len(textstrom)
; ***
zm - ll
; ***
If zm <= 0
text = textstrom
Else
For m = 1 To zm
text + " "
Next
; ***
text + textstrom
EndIf
EndSelect
EndSelect
tt = sc + text + Chr(10)
ProcedureReturn tt
EndProcedure
Procedure.s bon_sprung(sprungMenge.a = 1)
Define tt.s
; ***
For p = 1 To sprungMenge
tt + Chr($1B) + "!" + Chr(32) + Chr(9) + Chr(10)
Next
; ***
ProcedureReturn tt
EndProcedure
Procedure bon_datei( dateiNummer.l, strom.s )
WriteString( dateiNummer, strom, #PB_Ascii )
EndProcedure
Procedure drucken_bon()
Define bonjob.s = ""
bonjob = "C:\temp\bonjob.bin"
; ***
If FileSize( bonjob ) > 0
DeleteFile( bonjob )
EndIf
; ***
bonid = CreateFile( #PB_Any, bonjob )
; ***
If bonid
WriteString( bonid, Chr(27) + Chr(97) + Chr(1), #PB_Ascii )
WriteString( bonid, Chr(27) + Chr(83) + Chr(10), #PB_Ascii )
; ***
bon_datei( bonid, bon_text( #schrift_normal, "\-" ) )
bon_datei( bonid, bon_text( #schrift_normal, "Linksbündiger Text", #schrift_linksbundig ) )
bon_datei( bonid, bon_text( #schrift_normal, "\+" ) )
bon_datei( bonid, bon_text( #schrift_normal, "Zentrierter Text", #schrift_zentriert ) )
bon_datei( bonid, bon_text( #schrift_normal, "\=" ) )
bon_datei( bonid, bon_text( #schrift_normal, "Rechtsbündiger Text", #schrift_rechtsbundig ) )
bon_datei( bonid, bon_text( #schrift_normal, "\~" ) )
bon_datei( bonid, bon_text( #schrift_normal, "Artikel" + Chr(9) + "Preis", #schrift_teilen ) )
bon_datei( bonid, bon_text( #schrift_normal, "\+" ) )
bon_datei( bonid, bon_text( #schrift_dick_gross, "Beispiel", #schrift_zentriert ) )
bon_datei( bonid, bon_text( #schrift_normal, "\#" ) )
bon_datei( bonid, bon_sprung(2) )
bon_datei( bonid, bon_text( #schrift_dick_klein, "Alles wird gut", #schrift_zentriert ) )
bon_datei( bonid, bon_sprung(2) )
bon_datei( bonid, bon_text( #schrift_normal, "\_" ) )
bon_datei( bonid, bon_tabs( #schrift_dick_gross, "Pos" + Chr(9) + "Artikel" + Chr(9) + "Preis", 4, 0, 0 ) )
bon_datei( bonid, bon_tabs( #schrift_normal, "1" + Chr(9) + "Bügelmappe mit Extras und Handschuhe und Besen" + Chr(9) + "1,25", 4, 0, 0 ) )
bon_datei( bonid, bon_tabs( #schrift_normal, "2" + Chr(9) + "Planam Highline Hose" + Chr(9) + "39,25", 4, 0, 0 ) )
bon_datei( bonid, bon_tabs( #schrift_normal, "3" + Chr(9) + "BP Latzhose" + Chr(9) + "22,90", 4, 0, 0 ) )
bon_datei( bonid, bon_tabs( #schrift_normal, "4" + Chr(9) + "Schere" + Chr(9) + "43,45", 4, 0, 0 ) )
bon_datei( bonid, bon_sprung(3) )
; ***
CloseFile(bonid)
; ***
RunProgram( "DOSPrinter.exe", "C:\temp\bonjob.bin", "" )
EndIf
EndProcedure
drucken_bon()