Barcode auf Nadeldrucker

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo,
hat jemand so etwas schon mal realisiert, ohne die ganze Seite in Grafik zu drucken ?
Ich möchte eigentlich nur am Seitenanfang zwei Barcodezeilen drucken, dann im normalen Textmodus den Rest.
Viele Grüße
Wolfgang
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Rolf Ramacher »

Hi Wolfgang,

vielleicht hilft es dir. Hier ein Auszug wo Etiketten gedruckt werden - Text und Barcode - die Berechnung des Barcodes habe ich mal von Hubert bekommen. Ist 13-stellig - deine Barcodeberechnung kann natürlich eine andere sein. Den Drucker wähle ich übrigens mit XbpPrintdialog() aus.


Code: Alles auswählen

	oFont := XbpFont():new():create( "18.Courier New" )
			GraSetFont( oPs, oFont )

			aZPos[01]-=10
	      GraStringAt( oPS, aZPos , aSaetze[i][1] ) 
			aZPos[02]-=25
			aZPos[01]+=10

	      GraStringAt( oPS, aZPos , aSaetze[i][2] ) 
			aPos[02]:=aZPos[02]-85

			oFont := XbpFont():new():create( "26.Arial" )
			oFont:bold:=.t.
			oFont:configure()
			GraSetFont( oPs, oFont )
	      GraStringAt( oPS, aNrPos , aSaetze[i][11] ) 

			If aSaetze[i][12]="000"
			Else
				aNrPos[02]-=25
				oFont := XbpFont():new():create( "18.Arial" )
				GraSetFont( oPs, oFont )
		      GraStringAt( oPS, aNrPos , aSaetze[i][12] ) 
				aNrPos[02]+=25
			EndIf
			
			// Barcode-Berechnung
			oFont := XbpFont():new():create( "40.Arial" )
			GraSetFont( oPs, oFont )

			uEan13_Nr:=aSaetze[i][3]+aSaetze[i][4]+aSaetze[i][10]
			uEan13_Nr+=GraBarcodeEAN13_CalcCheckDigit(uEan13_Nr)
     		// Startblock  start sentinel - linker Anfang
	      cBarCodeBlock := "101"
	      // 1. Stelle EAN13 wird nicht verschlsselt,                      LAND 1. Stelle
	      //    sondern entscheidet odd/even Folge bei LEFT-HAND !
	      cFirstDigit := left(uEAN13_Nr,1)
	      // 2. Stelle EAN13 wird immer ODD verschlsselt                   LAND 2. Stelle
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,2,1)+"O")
	      // 3. - 7 Stelle EAN13                                            Manufakturer 5 Ziffern
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,3,1)+ ;
	                       GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,1))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,4,1)+ ;
	                       GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,2))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,5,1)+ ;
	                       GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,3))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,6,1)+ ;
	                       GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,4))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,7,1)+ ;
	                       GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,5))
	      // Mittlerer Trennblock   CENTER GUARD BARS
	      cBarCodeBlock += "01010"
	
	      // 8. - 12. Stelle EAN13                                          PRODUKT 5 Ziffern
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,8,1))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,9,1))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,10,1))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,11,1))
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,12,1))
	      // 13. Stelle CheckDigit immer als RightHand verschlsseln
	      cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,13,1))
	      // Endeblock   RIGHT GUARD BARS

  		   cBarCodeBlock += "101"
         nBarCodeBlockLen := len(cBarCodeBlock)

         // print the bars !
         for z := 1 to nBarCodeBlockLen
                if substr(cBarCodeBlock,z,1)="1"    // drucken
                   //   Anzahl Striche vor diesem   * Strichbreite = Startwert fr aktuellen Strich
                   x := aPos[1] + (nBarLeftBlankLines + z-1 ) * nBarLineDim
                   if z <= 3 .or. (z > 3+6*7 .and. z <= 3+6*7+5) .or. z > 3+6*7+5+6*7
                      // Strich ist ein langer Strich da kein Datenbereich
                      y := aPos[2] + nBarLongLineOffset
                   else
                      // Datenbereich, kurzer Strich
                      Y := aPos[2] + nBarShortLineOffset
                   endif
                   if z = nBarCodeBlockLen .or. substr(cBarCodeBlock,z+1,1)="1"
                      GraBox( oPS, {x,y}, {x+nBarLineDim,aPos[2]+nSizeY-nBarTopMargin},GRA_FILL  )
                   else
                      GraBox( oPS, {x,y}, {x+nBarLineDimPrint,aPos[2]+nSizeY-nBarTopMargin},GRA_FILL  )
                   endif
                endif
         next
			aPos[1]+=460

			oFont := XbpFont():new():create( "20.Arial" ) 	// vorher 19 wunsch Linda
			GraSetFont( oPs, oFont )
			cZeile3:=aSaetze[i][7]+"<"+aSaetze[i][8]+"> "+substr(aSaetze[i][4],1,3)+"-"+;
				substr(aSaetze[i][4],4,3)+"-"+substr(aSaetze[i][4],7,3)+" "+"<5-"+aSaetze[i][9]
			aZPos[02]-=105
  	      GraStringAt( oPS, aZPos , cZeile3 ) 
			aZPos[02]-=45
			cZeile4:=aSaetze[i][5]+space(3)+"EUR "+aSaetze[i][6]
			oFont := XbpFont():new():create( "30.Arial" )
			oFont:bold:=.t.
			oFont:configure()
			GraSetFont( oPs, oFont )
		   GraStringAt( oPS, aZPos , cZeile4 ) 

Function GraBarcodeEAN13_CalcCheckDigit(uEAN13_Nr) // gibt die CheckDigit als String zurck
                                                   // wegen fhrender 0 besser als String !
   local x, lFehler := .f., nSummOdd, nSummEven, cOddEven, nCheckSummValue,;
         cCheckSummValue, cCheckSummDigit,nCheckSummDigit

   do case
      case Valtype(uEAN13_Nr)="N"
           uEAN13_Nr := left(alltrim(str(uEAN13_Nr,15,0)),12)
      case Valtype(uEAN13_Nr)="C"
           uEAN13_Nr := left(alltrim(uEAN13_Nr,15),12)
      otherwise
*           cCheckSummDigit := ERR_EAN13_DATATYPE
           lFehler := .t.
   endcase

   if len(uEAN13_Nr) < 12 .and. ! lFehler // noch keine Fehlermeldung erhalten,
*      cCheckSummDigit := ERR_EAN13_PARAMETER_LEN
      lFehler := .t.
   endif

   if ! lFehler
      nSummOdd  := 0
      nSummEven := 0
      cOddEven  := "E" // erste Position des EAN13 Strings ist per Definition EVEN !

      for x := 1 to 12
          if cOddEven = "E"
             nSummEven += val(substr(uEAN13_Nr,x,1))
             cOddEven  := "O"
          else
             nSummOdd  += val(substr(uEAN13_Nr,x,1))
             cOddEven  := "E"
          endif
      next

      // CheckSummDigit ist der Unterschied von nCheckSummValue zum n„chsten vollen 10er.

      nCheckSummValue := nSummEven + nSummOdd * 3 // Gewichtung der Odd Position mit 3

      cCheckSummValue := right(alltrim(str(nCheckSummValue,15,0)),1) // letzte Position ermitteln

      nCheckSummDigit := 10 - val(cCheckSummValue) // von 0->0 1->9 2->8 etc.

      cCheckSummDigit := right(alltrim(str(nCheckSummDigit,3,0)),1)

   endif

Return cCheckSummDigit

Function GraBarcodeEAN13_EncodingTable(cEncodeID)
   local cReturnCode, x
   // aCodeTable = Verschlsselungstabelle fr Links Odd/Even und Rechts je Ziffer
   static aCodeTable := { { "L0O","0001101" } ,;
                          { "L0E","0100111" } ,;
                          { "L1O","0011001" } ,;
                          { "L1E","0110011" } ,;
                          { "L2O","0010011" } ,;
                          { "L2E","0011011" } ,;
                          { "L3O","0111101" } ,;
                          { "L3E","0100001" } ,;
                          { "L4O","0100011" } ,;
                          { "L4E","0011101" } ,;
                          { "L5O","0110001" } ,;
                          { "L5E","0111001" } ,;
                          { "L6O","0101111" } ,;
                          { "L6E","0000101" } ,;
                          { "L7O","0111011" } ,;
                          { "L7E","0010001" } ,;
                          { "L8O","0110111" } ,;
                          { "L8E","0001001" } ,;
                          { "L9O","0001011" } ,;
                          { "L9E","0010111" } ,;
                          { "R0" ,"1110010" } ,;
                          { "R1" ,"1100110" } ,;
                          { "R2" ,"1101100" } ,;
                          { "R3" ,"1000010" } ,;
                          { "R4" ,"1011100" } ,;
                          { "R5" ,"1001110" } ,;
                          { "R6" ,"1010000" } ,;
                          { "R7" ,"1000100" } ,;
                          { "R8" ,"1001000" } ,;
                          { "R9" ,"1110100" }   }  // nur einmal erzeugen spart Zeit.

   cEncodeID := upper(alltrim(cEncodeID))

   x := AScan( aCodeTable, {|cTmp| cTmp[1] == cEncodeID }  )

   if x = 0
      cReturnCode := "'cEncodeID'='"+cEncodeID+"' ist ungltig !"
   else
      cReturnCode := aCodeTable[x,2]
   endif
Return cReturnCode

*------------------------------------------------------------------------------------------
Function GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,nManufakturerStelle)
   local cReturnCode, x
   // aCodeTable = Verschlsselungstabelle fr Links Odd/Even und Rechts je Ziffer
   static aCodeTable := { { "0","O","O","O","O","O" } ,;
                          { "1","O","E","O","E","E" } ,;
                          { "2","O","E","E","O","E" } ,;
                          { "3","O","E","E","E","O" } ,;
                          { "4","E","O","O","E","E" } ,;
                          { "5","E","E","O","O","E" } ,;
                          { "6","E","E","E","O","O" } ,;
                          { "7","E","O","E","O","E" } ,;
                          { "8","E","O","E","E","O" } ,;
                          { "9","E","E","O","E","O" }    }  // nur einmal erzeugen spart Zeit.

   x := AScan( aCodeTable, {|cTmp| cTmp[1] == cFirstDigit }  )

   if x = 0
      cReturnCode := "'cFirstDigit'='"+cFirstDigit+"' ist ungltig !"
   else
      cReturnCode := aCodeTable[x,nManufakturerStelle+1]  // +1, da die ID auf 1. Stelle sitzt
   endif
Return cReturnCode



Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Tom »

Meiner Kenntnis nach haben viele Barcodeleser Schwierigkeiten mit Codes, die mit Nadeldruckern gedruckt wurden. Die Farbfüllung ist oft nicht flächig genug, um die heutzutage sehr hochauflösend arbeitenden Scanner davon zu überzeugen, dass die kruden Muster Balken sein sollen. Thermo- oder Thermotransferdrucker sind da die bessere Wahl.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Hi,

mit meiner oben erwähnten Barcode-Klasse, kann man mit LASER gut, mit Tintenstrahler normalerweise OK,
aber bestimmt nicht mit Nadeldruckern sauber drucken.
Die Auflösung die auf dem Papier ankommt und sicher auch die erwähnte Farbsättigung reichen nicht aus.

FALLS aber du einen finden solltest, der Barcodes eingebaut hat, dann kannst du es versuchen.

PS: Oben ist übrigens EAN13 realisiert. Mir wurde eine Abwandlung meiner Klasse für EAN7 oder ist es EAN8 ? zugesandt.
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo Tom,
ja das ist schon richtig, aber für Lieferscheine mit Durchschlägen geht das nun mal nicht.
Außerdem machen die das schon seit langem und es funktioniert.
Mir wäre es auch lieber, das mit L&L zu erledigen, das klappt ja auch, bloß alles als Grafik drucken, da benötigt der Drucker ja Minuten für eine Seite.
Ich dachte man könnte vielleicht nur den Barcode als Grafik erzeugen und drucken, dann auf Textmodus umschalten.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Hi,

wenn die das erfolgreich machen (mit welchem Barcode genau), dann muss es ja bisher irgendwie gegangen sein ?

Du kannst im Textmodus mit speziellen Steuerzeichen normalerweise eine Grafik einbinden, die muss aber auch passen.
Mit meiner Barcodeklasse (EAN13 !) müsste es möglich sein - weiß ich jetzt aber auch nicht genau - statt einem Drucker ein
XbpBitmap() anzugeben und das dann als bmp oder über die Zwischenablage zu kopieren.
Ob der Drucker das dann aber so verarbeiten kann ???

Wenn der EAN13 passen würde oder der kleinere könntest du auch hingehen und die Teile herausnehmen, die
berechnen ob eine Zelle gedruckt oder übersprungen wird (der EAN Code besteht ja aus gleich breiten Einheiten).
Mit dieser Info könntest du im Druckerhandbuch nachsehen wie eine Druckerrastergrafik generiert wird ...

was bin ich froh dass ich das nicht mehr brauche ;-)

Es ginge aber natürlich auch anders ... Epson Barcodeprinter zusätzlich anschließen, Aufkleber drucken und aufkleben ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9361
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Tom »

Hallo, Wolfgang.

Hast Du schonmal in den L&L-Foren ("Newsgroups") nach der Anforderung Barcode/Textdrucker gesucht? Ich meine, da mal was gelesen zu haben.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo Hubert,
der Barcodetyp ist "3 of 9" Schriftgröße 26.
Ja, wenn man den Barcode als Grafik hätte, dann könnte man vielleicht mit Steuerzeichen eine Grafikzeile ausgeben...

Also im Prinzip wieder drucken wie zu Clipperzeiten. Hat damals jemand schon Barcodes gedruckt ??
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo Tom,
nee, gute Idee, werde ich mal heute abend tun.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

zu 3 of 9 habe ich mal was gelesen ... ich meine das war RTF Font, der nützt dir aber erstmal nichts.
Für die Grafik musst du auf jeden Fall die Regel der Linien ermitteln und daraus dann weiße und schwarze Blöcke bauen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Laut Wikipedia ist er einfach herzustellen, da das Zeichen selbst die gedruckten (schwarz) und hellen Linien definieren.

http://de.wikipedia.org/wiki/Code39

aber wie steht da nicht.

Hier könntes du das gewünschte Ergebnis ermitteln:

http://www.freeware.de/download/code-39 ... 34683.html
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Erst einmal danke, ich denke das ist dann mal eine Wochenendaufgabe.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Hi,

hier gibt es den Aufbau im Klartext ...

http://www.strichcode.co.at/code39.htm
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo Hubert,
vielen Dank für die Info. Habe heute in Erfahrung gebracht, dass die Firma PSI Drucker einsetzt, die haben wohl die eingebaute Möglichkeit, Barcodes zu drucken. Jetzt muss ich mir nur noch das Benutzerhandbuch besorgen. Es soll wohl dann über eine bestimmte Emulation mit $$... statt ESC... funktionieren. Damit wäre das dann für mich relativ einfach zu lösen.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Wolfgang Ciriack hat geschrieben: die haben wohl die eingebaute Möglichkeit, Barcodes zu drucken.
wenn der Drucker sowas hardwareseitig vorsieht, sollte es auch funktionieren (notfalls öffters die Farbbänder wechseln ;-) )
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Hi,

diesen Text habe ich im PowerBasic Forum gefunden:

Code: Alles auswählen

' This selects EPSON PRINTER BARCODE to Code 39
LPRINT CHR$(27)+CHR$(16)+"A"+CHR$(8)+CHR$(2)+CHR$(0)+CHR$(0)+CHR$(5)+CHR$(1)+CHR$(1)+CHR$(1)+CHR$(1)
'This prints the contents of BARCODE$, 10 characters. 
LPRINT CHR$(27)+CHR$(16)+"B"+CHR$(10)+BARCODE$
wenn man also so einen Epson Drucker hat, dann kann man mit ESC/P Code den Barcode 39 einschalten ...

Code: Alles auswählen

... CHR(27)+CHR(16)+"A"+CHR(8)+CHR(2)+CHR(0)+CHR(0)+CHR(5)+CHR(1)+CHR(1)+CHR(1)+CHR(1)
und so den Barcode drucken ...

Code: Alles auswählen

cBarcode := "..."
... CHR(27)+CHR(16)+"B"+CHR(len(cBarcode))+cBarcode
eine kleine Plausi kann bei len(cBarcode) natürlich nichts schaden ... ;-)
Ausschalten des Barcodes könnte automatisch gehen, nachdem er gedruckt wurde.
Sicherheitshalber sollte man das aber im Handbuch nachsehen.

Dieser Link führt zum Epson Handbuch. Dort gibt es fast für jeden Epson Drucker eines :D

http://files.support.epson.com/pdf/lq2170/lq2170ps.pdf
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Herbert »

Darf ich mal dumm fragen?

Der Epson-Nadeldrucker ist doch auch unter Windows installierbar, das heisst mit entsprechenden Windows-Fonts ansprechbar?

So kann doch einfach der Code39 installiert werden und zum Drucker gesendet werden.

Wichtig: Code 39 sollte immer mit Ausrufezeichen beginnen und enden.

Code: Alles auswählen

oFontCode39 := xbpFont():new(oPS):create("12.Free 3 of 9 Extended")
oPS:device():startDoc('Journal')
GraSetFont(oPs, oFontCode39 )
GraStringAt(oPS,{10,12}, "!0123456789!")
Brauchts noch den Font. Den gibts, sogar legal :angel8: hier http://www.squaregear.net/fonts/free3of9.shtml
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2935
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Wolfgang Ciriack »

Hallo Hubert,
vielen Dank für deine Mühe, vielleicht braucht man das nochmal.
Mein Kunde hat aber PSI Drucker, da steuert man das mit

ESC [ ; p2 ; p3 ...;p7 z (Header) an und Start und Stop Barcode mit ESC [ ? 0 h bzw. l.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Herbert hat geschrieben:Der Epson-Nadeldrucker ist doch auch unter Windows installierbar, das heisst mit entsprechenden Windows-Fonts ansprechbar?
Ja, aber die Windows Fonts auf einem Nadeldrucker sind nicht sehr effektiv und wenn er das schon eingebaut kann ;-)

@ Wolfgang,

das war keine Mühe und falls nochmal jemand danach sucht ist er hier gut aufgehoben :-)
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von Herbert »

brandelh hat geschrieben: Ja, aber die Windows Fonts auf einem Nadeldrucker sind nicht sehr effektiv und wenn er das schon eingebaut kann ;-)
Nur bedingt
einerseits erstellen eir PDF-Kopien für die elektronische Ablage. Da würden die Barcodes dann fehlen.
andererseits musst du umprogrammieren, wenn ein anderer Drucker dasteht.

Bin aber beruhigt, dachte schon, dass an den Software-Fonts was faul wäre...
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Barcode auf Nadeldrucker

Beitrag von brandelh »

Hi,

ICH würde überhaupt keine Nadeldrucker mehr einsetzen und ausschließlich GUI Drucken,
aber das war oben wegen mangelnder Durchschläge ausgeschlossen worden ;-)

Ich persönlich würde einen grafischen Druck direkt aus Xbase++ heraus den Fonts vorziehen,
da man so keine Fonts installieren muss und weil bei der Fontauswahl auch was schief gehen könnte ...

Ihr bettet diese Fonts sicher in die PDF ein, dann gibt es damit aber bestimmt keine Probleme und
wenn der Anwender den Font lokal löscht oder umbenennt ist er selbst schuld. :D

Und solange der Barcodeleser damit zurecht kommt, warum nicht :-)
ich dachte ein Nadeldrucker und Barcode ... bei den Leseproblemen ... [-X
Wenn der aber keine hat, warum nicht. :D
Gruß
Hubert
Paul
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 43
Registriert: Mi, 21. Mär 2007 15:22
Wohnort: 1230 Wien

Re: Barcode auf Nadeldrucker

Beitrag von Paul »

Hallo Wolfgang,

ich hab dir doch ( lang, lang ists her) mein Dosprint gegeben.

Wenn du dies noch hast, müsste in pkprint.prg die function eanpz oder so ähnlich drin sein. Da wird der Ean-Code sowohl im Dos als auch mit Nadeldrucker gedruckt.

Servus Paul
Antworten