Barcode Modul
Barcode Modul
Ursprünglich hatte ich nur vor aus einer PB Anwendung heraus Palettenscheine zu drucken.
Also einen Barcode und ein bis zwei Textzeilen.
Nun gut, die Ansprüche stiegen, ist dann doch etwas umfangreicher geworden.
Features:
- Aktuell wird EAN8 , EAN13 und Code128 unterstützt. Weitere folgen.
- Beliebig viele Barcodes und Barcode- Typen auf eine Seite drucken.
- Beliebig viele Textzeilen auf einer Seite
- Barcode- und Textgröße frei definierbar.
- Farben und Zeichensätze frei definierbar.
- SVG-Export. Aktuell aber nur für den Code128
- Barcode Image-Export
Die Version 1.3.0 - 14/04/2018 sowie Beispiele und Dokumentation findet Ihr auf folgender Seite.
http://micha122.bplaced.net
Getestet habe ich die Barcodes mit dem Handy sowie einem echten Barcode- Scanner.
Getestet auf Windows x86 x64
Linux und macOS sollte aber auch klappen.
Also einen Barcode und ein bis zwei Textzeilen.
Nun gut, die Ansprüche stiegen, ist dann doch etwas umfangreicher geworden.
Features:
- Aktuell wird EAN8 , EAN13 und Code128 unterstützt. Weitere folgen.
- Beliebig viele Barcodes und Barcode- Typen auf eine Seite drucken.
- Beliebig viele Textzeilen auf einer Seite
- Barcode- und Textgröße frei definierbar.
- Farben und Zeichensätze frei definierbar.
- SVG-Export. Aktuell aber nur für den Code128
- Barcode Image-Export
Die Version 1.3.0 - 14/04/2018 sowie Beispiele und Dokumentation findet Ihr auf folgender Seite.
http://micha122.bplaced.net
Getestet habe ich die Barcodes mit dem Handy sowie einem echten Barcode- Scanner.
Getestet auf Windows x86 x64
Linux und macOS sollte aber auch klappen.
Zuletzt geändert von Micha122 am 14.04.2018 14:30, insgesamt 8-mal geändert.
Barcodes for PureBasic - http://micha122.bplaced.net/
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: Barcode Modul
vielen Dank fürs teilen, funktioniert wunderbar, verstehe zwar wenig aber das macht nix.
9109276043214 <-- Zahlen gedruckt und gescannt
2109876543210
35689140
nur die Fehlerseite beim Download läßt sich nicht drucken. 400 kb für etwas Text ist auch merkwürdig.
EDIT: habe den Download Button oben rechts übersehen, wollte die Webseite speichern.
Zuletzt geändert von hjbremer am 20.02.2018 19:56, insgesamt 1-mal geändert.
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Re: Barcode Modul
Lief erst nicht unter macOS ...
Musste folgendes ändern
1. Im Beispiel
2. Include Reihenfolge geändert. Erst StartPrinting...
Noch nicht Barcodeleser getestet. Aber Tolle Arbeit
P.S. Getestet nicht Handscanner und Smartfon
Musste folgendes ändern
1. Im Beispiel
Code: Alles auswählen
;IncludeFile "..\Source\Barcode_Module.pbi"
IncludeFile "../Source/Barcode_Module.pbi"
Code: Alles auswählen
; Drucken starten
Init_Printer.i = StartPrinting("EAN")
If Init_Printer.i = 0
ProcedureReturn 15
EndIf
VektorID = PrinterVectorOutput(#PB_Unit_Millimeter)
StartVectorDrawing(VektorID)
...
P.S. Getestet nicht Handscanner und Smartfon
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Barcode Modul
@hjbremer
Wäre schön wenn du das noch mal testen könntest.
@mk-soft
Grüße!
Danke für das positive Feedback.vielen Dank fürs teilen, funktioniert wunderbar,
Bin aktuell dabei den Code128 bzw. EAN128 zu implantieren. Dieser Code ist recht komplex, weshalb ich dann wohl oder über auch ein kleines Manual schreiben werde.verstehe zwar wenig aber das macht nix.
Ich habe das mal auf zwei anderen Rechnern als nicht angemeldeter User ausprobiert.....kein Problem. Das rtf ist 4kb groß.nur die Fehlerseite beim Download läßt sich nicht drucken. 400 kb für etwas Text ist auch merkwürdig.
Wäre schön wenn du das noch mal testen könntest.
@mk-soft
Werde versuchen das in nächster Version zu berücksichtigen. Wenn ich nicht klar komme melde ich mich noch mal.Lief erst nicht unter macOS ...
Musste folgendes ändern
Danke, du hast ja gewissermaßen mitgeholfen.Noch nicht Barcodeleser getestet. Aber Tolle Arbeit
Grüße!
Barcodes for PureBasic - http://micha122.bplaced.net/
Re: Barcode Modul
Hallo Leute!
Ich habe mein Barcode Modul um den Code128 erweitert.
Es werden alle drei Codepages (A, B und C) unterstützt.
Leider ist der Code128 für den Benutzer nicht so einfach zu handhaben wie beispielsweise der EAN8 oder EAN13.
Das heißt: Man kann nicht einfach irgendwas eintippen und hoffen das klappt schon. Man muss die Steuercodes kennen.
Hier ein kurzes Beispiel welches "Hallo PB-GEMEINDE 2018" ausgibt:
Dieses Beispiel benutzt alle drei Codepages.
"<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018;<P>" + Str(Checksum) + ";<STOP>"
Dieser Code startet mit Codepage B. Für "Hallo" wird also Codepage B benutzt.
Dann wird auf Code A umgeschaltet und für "PB-GEMEINDE" benutzt.
Als nächstes wird für "2018" auf Code C umgeschaltet.
Nun folgt ein <P> für Prüfziffer gefolgt von der vorher errechneten Prüfziffer.
Als letztes folgt der Stop-Code.
Wie Ihr vielleicht schon gesehen habt, sind die einzelnen Codebereiche durch ein Semikolon zu trennen.
Hier die Schreibweise der Code- Funktionen:
Codepage A:
Codepage B:
Codepage C:
Auf dieser Seite http://www.adams1.com/128table.html ist sehr schön zu sehen, welche Codepage welche Zeichen darstellen kann.
Ich weis, ist nicht so einfach, beantworte aber gerne Fragen.
Noch eine Info zum Drucken und Scannen:
Der Code128 hat eine recht hohe Informationsdichte.
Damit möchte ich sagen, je kleiner gedruckt werden soll, desto besser müssen Drucker und Barcodeleser sein.
Grüße
Ich habe mein Barcode Modul um den Code128 erweitert.
Es werden alle drei Codepages (A, B und C) unterstützt.
Leider ist der Code128 für den Benutzer nicht so einfach zu handhaben wie beispielsweise der EAN8 oder EAN13.
Das heißt: Man kann nicht einfach irgendwas eintippen und hoffen das klappt schon. Man muss die Steuercodes kennen.
Hier ein kurzes Beispiel welches "Hallo PB-GEMEINDE 2018" ausgibt:
Code: Alles auswählen
IncludeFile "C:\Users\Micha\Desktop\Barcode_Module\Source\Barcode_Module.pbi"
EnableExplicit
UseModule Common
UseModule Barcode
Define Checksum = Generate_Code128_Checksum("<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018")
If Checksum > 99
Debug "Fehler: " + Checksum
End
EndIf
Define Code128.s, Code128_Sequence.s, Checksum.i, Result.i
Code128_Sequence.s = Generate_Code128_Sequence("<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018;<P>" + Str(Checksum) + ";<STOP>")
If Code128_Sequence.s = "26" Or Code128_Sequence.s = "27" Or Code128_Sequence.s = "28" Or Code128_Sequence.s = "29" Or Code128_Sequence.s = "30"
Debug "Fehler: " + Code128_Sequence.s
End
EndIf
NewList Barcode.Barcode_Parameter() ;Alle Barcodes die gedruckt werden sollen
NewList Text.Text_Line() ;Alle Textzeilen gedruckt werden sollen
Define Printer.Print_Parameter ;Druckparameter
;Papiergrösse/Druckparameter. Alle Größenangaben in Millimeter!
Printer\Page_width = 210 ;A4
Printer\Page_height = 297 ;A4
Printer\Left_edge = 20 ;20mm Rand
Printer\Right_edge = 20 ;20mm Rand
Printer\Top_edge = 20 ;20mm Rand
Printer\Upper_edge = 20 ;20mm Rand
Printer\Pages = 1 ;Anzahl zu druckender Seiten
Printer\Print_Requester = #True ;#False für Standarddrucker, #True für Drucker Auswahl
;Einen Code128 hinzufügen. Alle Größenangaben in Millimeter!
AddElement(Barcode())
Barcode()\Type = "CODE128" ;Aktuell wird "EAN8", "EAN13" und "Code128" unterstützt
Barcode()\Barcode = "Hallo PB-GEMEINDE 2018" ;Die Barcodeziffern inkl. Prüfziffer
Barcode()\Font = "Arial" ;Zeichensatz für Ziffern. Leer lassen wenn keine Ziffern erzeugt werden sollen
Barcode()\Sequence = Code128_Sequence.s ;Wurde von <Generate_Code128_Sequence()> erzeugt
Barcode()\Width = 70 ;Die Barcode Breite
Barcode()\Height = 20 ;Die Barcode Höhe
Barcode()\PosX = 90 ;Position
Barcode()\PosY = 50 ;Position
Barcode()\Color0_RGB = "255,255,255" ;Linienfarbe1 als RGB getrennt durch Komma
Barcode()\Color1_RGB = "0,0,0" ;Linienfarbe1 als RGB getrennt durch Komma
Barcode()\ColorDigits_RGB = "0,0,0" ;Farbe der Ziffern als RGB getrennt durch Komma
Result.i = Print_Barcode(Barcode(), Printer, Text())
If Result.i <> 1
Debug "Fehler :" + Result.i
EndIf
"<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018;<P>" + Str(Checksum) + ";<STOP>"
Dieser Code startet mit Codepage B. Für "Hallo" wird also Codepage B benutzt.
Dann wird auf Code A umgeschaltet und für "PB-GEMEINDE" benutzt.
Als nächstes wird für "2018" auf Code C umgeschaltet.
Nun folgt ein <P> für Prüfziffer gefolgt von der vorher errechneten Prüfziffer.
Als letztes folgt der Stop-Code.
Wie Ihr vielleicht schon gesehen habt, sind die einzelnen Codebereiche durch ein Semikolon zu trennen.
Hier die Schreibweise der Code- Funktionen:
Codepage A:
Code: Alles auswählen
"<NUL>","<SOH>","<STX>","<ETX>","<EOT>","<ENQ>","<ACK>","<BEL>","<BS>","<HT>","<LF>","<VT>","<FF>","<CR>","<SO>","<SI>","<DLE>",
"<DC1>","<DC2>","<DC3>","<DC4>","<NAK>","<SYN>","<ETB>","<CAN>","<EM>","<SUB>","<ESC>","<FS>","<GS>","<RS>","<US>","<FNC 3>","<FNC 2>","<SHIFT>","<CODE C>",
"<CODE B>","<FNC 4>","<FNC 1>","<START A>","<START B>","<START C>","<STOP>"
Code: Alles auswählen
"<DEL>","<FNC 3>","<FNC 2>","<SHIFT>","<CODE C>","<FNC 4>","<CODE A>","<FNC 1>","<START A>","<START B>","<START C>","<STOP>"
Code: Alles auswählen
<CODE B>","<CODE A>","<FNC 1>","<START A>","<START B>","<START C>","<STOP>"
Ich weis, ist nicht so einfach, beantworte aber gerne Fragen.
Noch eine Info zum Drucken und Scannen:
Der Code128 hat eine recht hohe Informationsdichte.
Damit möchte ich sagen, je kleiner gedruckt werden soll, desto besser müssen Drucker und Barcodeleser sein.
Grüße
Barcodes for PureBasic - http://micha122.bplaced.net/
Re: Barcode Modul
Vielen Dank fürs teilen
Kann ich bestimmt mal gut gebrauchen
P.S.
Lesen von Code128 ist auch blöd... Vor allem wenn man Groß- Kleinschreibung hat, oder Sonderzeichen verwendet.
Die einfachen Scanner liefern die Steuerzeichen wie '<Shift>' oder '<Sonderzeichen>' und wandeln den Text nicht selber um.
Kann ich bestimmt mal gut gebrauchen
P.S.
Lesen von Code128 ist auch blöd... Vor allem wenn man Groß- Kleinschreibung hat, oder Sonderzeichen verwendet.
Die einfachen Scanner liefern die Steuerzeichen wie '<Shift>' oder '<Sonderzeichen>' und wandeln den Text nicht selber um.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Barcode Modul
Danke für das Feedback mk-soft.
Was ich generell mal vergessen habe zu schreiben, ist, das man die mitgelieferte Druckroutine nicht unbedingt benutzen muss.
Mit den erzeugten Sequenzen ist es ein Kinderspiel den Barcode selber zu zeichnen.
Die Code128 Sequenz für "Hallo PB-GEMEINDE 2018" (<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018;<P>" + Str(Checksum) + ";<STOP>) sieht zum Beispiel so aus:
(ohne Leerzeichen) - RSBasic
Die 1 steht für eine dunkle Linie, die 0 für eine helle Linie.
Grüße, Micha
__________________________________________________
Leerzeichen hinzugefügt
23.03.2018
RSBasic
Also ich verwende ausschließlich Scanner unter 100€. Ich konnte dieses Problem mit einer richtigen Scanner- Konfiguration lösen.Lesen von Code128 ist auch blöd... Vor allem wenn man Groß- Kleinschreibung hat, oder Sonderzeichen verwendet.
Die einfachen Scanner liefern die Steuerzeichen wie '<Shift>' oder '<Sonderzeichen>' und wandeln den Text nicht selber um.
Was ich generell mal vergessen habe zu schreiben, ist, das man die mitgelieferte Druckroutine nicht unbedingt benutzen muss.
Mit den erzeugten Sequenzen ist es ein Kinderspiel den Barcode selber zu zeichnen.
Die Code128 Sequenz für "Hallo PB-GEMEINDE 2018" (<START B>Hallo;<CODE A> PB-GEMEINDE ;<CODE C>2018;<P>" + Str(Checksum) + ";<STOP>) sieht zum Beispiel so aus:
Code: Alles auswählen
11010010000110001010001001011000011001010000110010100001000111101011101 01111011011001100111011101101000101100010011011100110100010001000110100010111 011000100011010001100010001010111000110101100010001000110100011011001100101110 111101100100111011001110010100011010001100011101011
Die 1 steht für eine dunkle Linie, die 0 für eine helle Linie.
Grüße, Micha
__________________________________________________
Leerzeichen hinzugefügt
23.03.2018
RSBasic
Barcodes for PureBasic - http://micha122.bplaced.net/
Re: Barcode Modul
Wünsche zunächst mal allen schöne Ostertage. Wetter spielt ja einigermaßen mit, zumindest bei uns.
Da für die Zukunft noch einiges geplant ist, habe ich das vorhandene erst einmal dokumentiert.
Source Code, Beispiele und Dokumentation sind nun zentral an einem Ort zu finden.
http://micha122.bplaced.net
Ich denke das ist auch für Euch einfacher.
Zwar nur Free-hoster, aber zumindest ohne Werbung.
Grüße, Michael
Da für die Zukunft noch einiges geplant ist, habe ich das vorhandene erst einmal dokumentiert.
Source Code, Beispiele und Dokumentation sind nun zentral an einem Ort zu finden.
http://micha122.bplaced.net
Ich denke das ist auch für Euch einfacher.
Zwar nur Free-hoster, aber zumindest ohne Werbung.
Grüße, Michael
Barcodes for PureBasic - http://micha122.bplaced.net/
Re: Barcode Modul
Vielen Dank für das Modul.
Die Web-Seite sieht doch sehr gut aus
Die Web-Seite sieht doch sehr gut aus
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Barcode Modul
Hallo Suther Michael ,
Ich bekomme lediglich bei den Beispielen 3 und 4 einen Fehlercode 19 geliefert.
19 = Ein Text geht über den rechten Druckrand hinaus
Anbei: Bei:
Also unter Linux Mint 18.3 funktioniert es.Linux: Leider bisher noch keine Rückmeldung. Tester gesucht!
Ich bekomme lediglich bei den Beispielen 3 und 4 einen Fehlercode 19 geliefert.
19 = Ein Text geht über den rechten Druckrand hinaus
Anbei: Bei:
ist ein kleiner Buchstabendreher versteckt.Mehrere Bracodes, Textzeilen und Styles auf einer Seite.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat