PureBoard
http://forums.purebasic.com/german/

Barcode Modul
http://forums.purebasic.com/german/viewtopic.php?f=8&t=30623
Seite 7 von 7

Autor:  Micha122 [ 13.04.2018 11:30 ]
Betreff des Beitrags:  Re: Barcode Modul

nicolaus hat geschrieben:
Verstehe ich das somit richtig und es ist aktuell "nur" möglich zu Drucken oder als SVG zu exportieren?

Ja, ist momentan so.
Die Druckfunktion unterstützt aktuell EAN8/13, Code128 sowie frei definierbare Textzeilen.
Der SVG-Export funktioniert aktuell nur mit Code128.

nicolaus hat geschrieben:
Genial wäre auch eine Option wo mir der Barcode als PNG im Speicher zurückgegeben wird.

Die Idee ist gut. :allright:

nicolaus hat geschrieben:
Wäre es möglich das Modul zu erweitern, so dass du den Barcode auch als PNG im Speicher hältst und das Handel dessen zurück gibst (z.b. mit CreateImage() )?

Wie ich es schon schrieb, die Idee gefällt mir.
Werde ich heute Abend einbauen. :wink:

Autor:  nicolaus [ 13.04.2018 18:11 ]
Betreff des Beitrags:  Re: Barcode Modul

Micha122 hat geschrieben:
Wie ich es schon schrieb, die Idee gefällt mir.
Werde ich heute Abend einbauen. :wink:


+1

Autor:  Micha122 [ 13.04.2018 22:30 ]
Betreff des Beitrags:  Re: Barcode Modul

Hier vorab ein Screenshot meiner Umsetzung der Idee von @nicolaus.


Bild

Die neue Funktion Barcode_Image_Export() wird mit allen unterstützten Barcodes funktionieren.

Möchte noch ein wenig testen, weshalb neue Version des Moduls erst morgen online ist.

Grüße, Michael

Autor:  nicolaus [ 13.04.2018 22:36 ]
Betreff des Beitrags:  Re: Barcode Modul

Micha122 hat geschrieben:
Hier vorab ein Screenshot meiner Umsetzung der Idee von @nicolaus.


Bild

Die neue Funktion Barcode_Image_Export() wird mit allen unterstützten Barcodes funktionieren.

Möchte noch ein wenig testen, weshalb neue Version des Moduls erst morgen online ist.

Grüße, Michael


Schon mal genial, DANKE!

Noch eine Frage, kann man den Text des Barcodes auch weg lassen, sprich ist das eine Option oder ist der Text immer da?
Hintergrund ist das in meinem Fall die MAC Adresse des BT Dongles als Barcode hinterlegt ist und ich möchte nicht das normale User diese sehen.

Danke schon mal

Autor:  Micha122 [ 13.04.2018 22:53 ]
Betreff des Beitrags:  Re: Barcode Modul

nicolaus hat geschrieben:
Noch eine Frage, kann man den Text des Barcodes auch weg lassen, sprich ist das eine Option oder ist der Text immer da?

Das ist kein Problem, funktioniert auch beim SVG-Export oder Drucken. :D
Einfach "Image_Export\Text" nicht benutzen bzw. einen leeren String eintragen.

Bild

Autor:  Micha122 [ 14.04.2018 14:36 ]
Betreff des Beitrags:  Re: Barcode Modul

Neue Version mit Image-Export für alle unterstützten Barcodes ist online. :D

Die Benutzung ist sehr einfach.
Hier ein Beispiel (Code128):
Code:
IncludeFile "C:\Users\Micha\Desktop\Barcode_Module\Source\Barcode_Modul 1.3.0.pbi"

EnableExplicit
UseModule Common
UseModule Barcode

Define Code128.s, Code128_Sequence.s, Checksum.i, Result.i, Event.i, quit.i, width.d, height.d, Image_Number.i

;Prüfziffer berechnen
Define Checksum = Generate_Code128_Checksum(#BC128_StartB + #BC128_FNC4 + "Dein Text oder sonstiges")
If Checksum > 99
  Debug "Fehler Generate_Code128_Checksum(): " + Checksum
  End
EndIf

;Linien-Sequenz generieren
Code128_Sequence.s = Generate_Code128_Sequence(#BC128_StartB + #BC128_FNC4 + "Dein Text oder sonstiges" + #BC128_Checksum + Str(Checksum) + #BC128_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 Generate_Code128_Sequence(): " + Code128_Sequence.s
  End
EndIf

;Benötigten Parameter in die Struktur Image_Parameter
Define Image_Export.Image_Parameter
Image_Export\Type = #BCODE_Type_Code128                 ;Beispiel: Konstante #BCODE_Type_EAN13
Image_Export\Text = "Dein Text oder sonstiges"          ;Die Code Ziffern/Buchstaben. Beispiel EAN8: "72395677"
Image_Export\Font = "ocrB"                              ;Beispiel: "ocrB". Die Größe wird automatisch angepasst. Wird kein Font angegeben, Wird der Code OHNE Ziffern gedruckt
Image_Export\Sequence = Code128_Sequence.s              ;Die zuvor erzeugte Linien Sequenz.
Image_Export\Width = 150                                ;Die Barcode Breite in Millimeter
Image_Export\Height = 50                                ;Die Barcode Höhe in Millimeter
Image_Export\Color0 = "255,255,255"                     ;Farbe der hellen Code Linien. Beispiel: "255,255,255". Komma = Trennzeichen
Image_Export\Color1 = "0,0,0"                           ;Farbe der dunklen Code Linien. Beispiel: "0,0,0". Komma = Trennzeichen
Image_Export\ColorDigits = "0,0,0"                      ;Farbe der Code Ziffern. Beispiel: "0,0,0". Komma = Trennzeichen

;Umrechnung Millimeter zu Pixel bei 96 DPI
width.d = Image_Export\Width / 25.4 * 96
height.d = Image_Export\Height / 25.4 * 96

;Bild erstellen
Image_Number.i = CreateImage(#PB_Any, width.d, height.d, 24, RGB(255,255,255))
Image_Export\Image_Number = Image_Number.i

;Den Barcode zeichnen lassen
Result.i = Barcode_Image_Export(Image_Export)
If Result.i <> 1
  Debug "Fehler Barcode_Image_Export(): " + Result.i
  End
EndIf

;Fenster mit Image-Gadget öffnen
If OpenWindow(0, 0, 0, width.d + 30, height.d + 30, "Code128 Bitmap Demo", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  ImageGadget(0,  15, 15, 0, 0, ImageID(Image_Number.i))
  Repeat
    Event = WaitWindowEvent() 
    If Event.i = #PB_Event_CloseWindow
      quit.i = 1
    EndIf   
  Until quit.i = 1 
EndIf

End


Weitere Beispiele findet Ihr dort: http://micha122.bplaced.net/?Beispiele

Grüße, Michael

Autor:  nicolaus [ 15.04.2018 19:42 ]
Betreff des Beitrags:  Re: Barcode Modul

Micha122 hat geschrieben:
Neue Version mit Image-Export für alle unterstützten Barcodes ist online. :D

Die Benutzung ist sehr einfach.
Hier ein Beispiel (Code128):
Code:
IncludeFile "C:\Users\Micha\Desktop\Barcode_Module\Source\Barcode_Modul 1.3.0.pbi"

EnableExplicit
UseModule Common
UseModule Barcode

Define Code128.s, Code128_Sequence.s, Checksum.i, Result.i, Event.i, quit.i, width.d, height.d, Image_Number.i

;Prüfziffer berechnen
Define Checksum = Generate_Code128_Checksum(#BC128_StartB + #BC128_FNC4 + "Dein Text oder sonstiges")
If Checksum > 99
  Debug "Fehler Generate_Code128_Checksum(): " + Checksum
  End
EndIf

;Linien-Sequenz generieren
Code128_Sequence.s = Generate_Code128_Sequence(#BC128_StartB + #BC128_FNC4 + "Dein Text oder sonstiges" + #BC128_Checksum + Str(Checksum) + #BC128_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 Generate_Code128_Sequence(): " + Code128_Sequence.s
  End
EndIf

;Benötigten Parameter in die Struktur Image_Parameter
Define Image_Export.Image_Parameter
Image_Export\Type = #BCODE_Type_Code128                 ;Beispiel: Konstante #BCODE_Type_EAN13
Image_Export\Text = "Dein Text oder sonstiges"          ;Die Code Ziffern/Buchstaben. Beispiel EAN8: "72395677"
Image_Export\Font = "ocrB"                              ;Beispiel: "ocrB". Die Größe wird automatisch angepasst. Wird kein Font angegeben, Wird der Code OHNE Ziffern gedruckt
Image_Export\Sequence = Code128_Sequence.s              ;Die zuvor erzeugte Linien Sequenz.
Image_Export\Width = 150                                ;Die Barcode Breite in Millimeter
Image_Export\Height = 50                                ;Die Barcode Höhe in Millimeter
Image_Export\Color0 = "255,255,255"                     ;Farbe der hellen Code Linien. Beispiel: "255,255,255". Komma = Trennzeichen
Image_Export\Color1 = "0,0,0"                           ;Farbe der dunklen Code Linien. Beispiel: "0,0,0". Komma = Trennzeichen
Image_Export\ColorDigits = "0,0,0"                      ;Farbe der Code Ziffern. Beispiel: "0,0,0". Komma = Trennzeichen

;Umrechnung Millimeter zu Pixel bei 96 DPI
width.d = Image_Export\Width / 25.4 * 96
height.d = Image_Export\Height / 25.4 * 96

;Bild erstellen
Image_Number.i = CreateImage(#PB_Any, width.d, height.d, 24, RGB(255,255,255))
Image_Export\Image_Number = Image_Number.i

;Den Barcode zeichnen lassen
Result.i = Barcode_Image_Export(Image_Export)
If Result.i <> 1
  Debug "Fehler Barcode_Image_Export(): " + Result.i
  End
EndIf

;Fenster mit Image-Gadget öffnen
If OpenWindow(0, 0, 0, width.d + 30, height.d + 30, "Code128 Bitmap Demo", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
  ImageGadget(0,  15, 15, 0, 0, ImageID(Image_Number.i))
  Repeat
    Event = WaitWindowEvent() 
    If Event.i = #PB_Event_CloseWindow
      quit.i = 1
    EndIf   
  Until quit.i = 1 
EndIf

End


Weitere Beispiele findet Ihr dort: http://www.micha122.bplaced.net/?Beispiele

Grüße, Michael



Genial und vielen Dank für die schnelle Umsetzung!!!
+1

Autor:  Micha122 [ 15.04.2018 23:14 ]
Betreff des Beitrags:  Re: Barcode Modul

Das war mehr oder weniger nur eine Copy/Paste - Sache mit nen paar Anpassungen. :wink:

Ich selber werde Barcode_Image_Export() sicherlich kaum benutzen...... ich habe in der Praxis leider keine Verwendung dafür. :oops:

Es liegt also an Dir/Euch die Funktion zu verbessern, zum Beispiel mit Bug-Meldungen oder Ideen. :wink:

Grüße, Michael

Seite 7 von 7 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/