Barcode Modul

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Barcode Modul

Beitrag von Micha122 »

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:
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Barcode Modul

Beitrag von nicolaus »

Micha122 hat geschrieben: Wie ich es schon schrieb, die Idee gefällt mir.
Werde ich heute Abend einbauen. :wink:
+1
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Barcode Modul

Beitrag von Micha122 »

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
Zuletzt geändert von Micha122 am 03.06.2018 07:33, insgesamt 1-mal geändert.
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Barcode Modul

Beitrag von nicolaus »

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
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Barcode Modul

Beitrag von Micha122 »

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
Zuletzt geändert von Micha122 am 03.06.2018 07:33, insgesamt 1-mal geändert.
Barcodes for PureBasic - http://micha122.bplaced.net/
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Barcode Modul

Beitrag von Micha122 »

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

Die Benutzung ist sehr einfach.
Hier ein Beispiel (Code128):

Code: Alles auswählen

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
Zuletzt geändert von Micha122 am 03.06.2018 07:32, insgesamt 1-mal geändert.
Barcodes for PureBasic - http://micha122.bplaced.net/
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Re: Barcode Modul

Beitrag von nicolaus »

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: Alles auswählen

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
Micha122
Beiträge: 248
Registriert: 02.10.2011 14:45
Wohnort: Sinzig
Kontaktdaten:

Re: Barcode Modul

Beitrag von Micha122 »

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
Barcodes for PureBasic - http://micha122.bplaced.net/
MenschMarkus
Beiträge: 218
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: Barcode Modul

Beitrag von MenschMarkus »

Hm,
Micha122, Dein Link funtioniert nicht :roll: . Bitte einmal aktualisieren :| .
Danke
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Barcode Modul

Beitrag von RSBasic »

Schau mal hier: https://www.rsbasic.de/backups/
Und suche nach "Barcode".
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten