[B3D, BP?] Code 39
Übersicht

PhloxBetreff: [B3D, BP?] Code 39 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
Da ich für mein Programm einen Code brauchte, um Strichcodes zu zeichnen, habe ich mal etwas geschrieben. Es wird ein 3 of 9 / Code 39 Code. Als Vorgabe habe ich das hier genommen: http://www.strichcodeservice.at/code39.htm (Danke BladeRunner). Es könnte ja sein, dass es jemand gebrauchen kann. Da ich die entstandenen Strichcodes nicht nicht testen konnte, ist die Benutzung auf eigene Gefahr. Kleine Erklärung der Funktionen: Make2Code39(code$,[adds=1],[bgcolorr=255],[bgcolorg=255],[bgcolorb=255],[cr=0],[cg=0],[cb=0]) code$ ist die zu "Verschlüsselnde" Zeichenkette. Darf A-B, 0-9, Sonderzeichen: SPACE, -, ., $, /, +, % sein. (Nur Großbuchstaben und * Nur wenn adds=0) adds ist die Option, ein * vor den Code zu machen. Dies benötigen alle Strichcodescanner. bgcolorr,bgcolorg,bgcolorb ist die Hintergrundfarbe des Codes. cr,cg,cb die Vordergrundfarbe. cg sollte immer niedrig sein, da der Code von Scanner sonst möglicherweise nicht erkannt wird. Ruckgabewert der Funktion ist ein BILD (Dimensionen:abhängig,330)! Draw_39(start,s$) ist eine interne Funktion zum einfachen zeichnen. Code: [AUSKLAPPEN] Function Make2Code39(code$,adds=1,bgcolorr=255,bgcolorg=255,bgcolorb=255,cr=0,cg=0,cb=0) code$=Upper(code$) Local img2=CreateImage(8000,330) Local buffer=GraphicsBuffer(),xwert=10,D,F=LoadFont("Verdana",30,1),oldx SetFont F SetBuffer ImageBuffer(img2) ClsColor bgcolorr,bgcolorg,bgcolorb Cls Color cr,cg,cb If adds=1 Then xwert=Draw_39(xwert,"010010100") xwert=xwert+5 Else xwert=10 EndIf For D=1 To Len(code$) Select Mid(code$,D,1) Case "0" oldx=xwert xwert=Draw_39(xwert,"000110100") xwert=xwert+5 Case "1" oldx=xwert xwert=Draw_39(xwert,"100100001") xwert=xwert+5 Case "2" oldx=xwert xwert=Draw_39(xwert,"001100001") xwert=xwert+5 Case "3" oldx=xwert xwert=Draw_39(xwert,"101100000") xwert=xwert+5 Case "4" oldx=xwert xwert=Draw_39(xwert,"000110001") xwert=xwert+5 Case "5" oldx=xwert xwert=Draw_39(xwert,"100110000") xwert=xwert+5 Case "6" oldx=xwert xwert=Draw_39(xwert,"001110000") xwert=xwert+5 Case "7" oldx=xwert xwert=Draw_39(xwert,"000100101") xwert=xwert+5 Case "8" oldx=xwert xwert=Draw_39(xwert,"100100100") xwert=xwert+5 Case "9" oldx=xwert xwert=Draw_39(xwert,"001100100") xwert=xwert+5 Case "A" oldx=xwert xwert=Draw_39(xwert,"100001001") xwert=xwert+5 Case "B" oldx=xwert xwert=Draw_39(xwert,"001001001") xwert=xwert+5 Case "C" oldx=xwert xwert=Draw_39(xwert,"101001000") xwert=xwert+5 Case "D" oldx=xwert xwert=Draw_39(xwert,"000011001") xwert=xwert+5 Case "E" oldx=xwert xwert=Draw_39(xwert,"100011000") xwert=xwert+5 Case "F" oldx=xwert xwert=Draw_39(xwert,"001011000") xwert=xwert+5 Case "G" oldx=xwert xwert=Draw_39(xwert,"000001101") xwert=xwert+5 Case "H" oldx=xwert xwert=Draw_39(xwert,"100001100") xwert=xwert+5 Case "I" oldx=xwert xwert=Draw_39(xwert,"001001100") xwert=xwert+5 Case "J" oldx=xwert xwert=Draw_39(xwert,"000011100") xwert=xwert+5 Case "K" oldx=xwert xwert=Draw_39(xwert,"100000011") xwert=xwert+5 Case "L" oldx=xwert xwert=Draw_39(xwert,"001000011") xwert=xwert+5 Case "M" oldx=xwert xwert=Draw_39(xwert,"101000010") xwert=xwert+5 Case "N" oldx=xwert xwert=Draw_39(xwert,"000010011") xwert=xwert+5 Case "O" oldx=xwert xwert=Draw_39(xwert,"100010010") xwert=xwert+5 Case "P" oldx=xwert xwert=Draw_39(xwert,"001010010") xwert=xwert+5 Case "Q" oldx=xwert xwert=Draw_39(xwert,"000000111") xwert=xwert+5 Case "R" oldx=xwert xwert=Draw_39(xwert,"100000110") xwert=xwert+5 Case "S" oldx=xwert xwert=Draw_39(xwert,"001000110") xwert=xwert+5 Case "T" oldx=xwert xwert=Draw_39(xwert,"000010110") xwert=xwert+5 Case "U" oldx=xwert xwert=Draw_39(xwert,"110000001") xwert=xwert+5 Case "V" oldx=xwert xwert=Draw_39(xwert,"011000001") xwert=xwert+5 Case "W" oldx=xwert xwert=Draw_39(xwert,"111000000") xwert=xwert+5 Case "X" oldx=xwert xwert=Draw_39(xwert,"010010001") xwert=xwert+5 Case "Y" oldx=xwert xwert=Draw_39(xwert,"110010000") xwert=xwert+5 Case "Z" oldx=xwert xwert=Draw_39(xwert,"011010000") xwert=xwert+5 Case "-" oldx=xwert xwert=Draw_39(xwert,"010000101") xwert=xwert+5 Case "." oldx=xwert xwert=Draw_39(xwert,"110000100") xwert=xwert+5 Case " " oldx=xwert xwert=Draw_39(xwert,"011000100") xwert=xwert+5 Case "*";!ACHTUNG!!! BEENDET DEN STRICHCODE!!! oldx=xwert xwert=Draw_39(xwert,"010010100") xwert=xwert+5 Case "$" oldx=xwert xwert=Draw_39(xwert,"010101000") xwert=xwert+5 Case "/" oldx=xwert xwert=Draw_39(xwert,"010100010") xwert=xwert+5 Case "%" oldx=xwert xwert=Draw_39(xwert,"000101010") xwert=xwert+5 Default oldx=xwert Color 0,0,255 xwert=Draw_39(xwert,"111111111") Color cr,cg,cb xwert=xwert+15 End Select Text ((xwert-oldx)/2)+oldx,295,Mid(code$,D,1),1,0 Next Color cr,cg,cb If adds=1 Then xwert=Draw_39(xwert,"010010100") EndIf Local img=CreateImage(xwert+40,330) SetBuffer ImageBuffer(img) Cls SetBuffer ImageBuffer(img2) CopyRect 0,0,xwert+10,330,15,0,ImageBuffer(img2),ImageBuffer(img) FreeImage img2 SetBuffer buffer MaskImage img,255,0,255 FreeFont F Return img End Function Function Draw_39(start,s$) Local M,mode=1,d=0 For M=1 To Len(s$) If mode=1 Then If Mid(s$,M,1)="1" Then Rect start,10,15,280 start=start+15 mode=2 d=1 Else Rect start,10,10,280 start=start+10 mode=2 d=1 EndIf EndIf If mode=2 And d=0 Then If Mid(s$,M,1)="1" Then start=start+15 mode=1 Else start=start+5 mode=1 EndIf EndIf d=0 Next Return start End Function Beispiel: Code: [AUSKLAPPEN] Graphics 1024,768,32,2
DrawImage Make2Code39("CODE",1,255,255,0,0,0,100),0,0 DrawImage Make2Code39("12345",1),0,340 WaitKey End MfG P.S.: Könnte jemand überprüfen, ob die Strichcodes funktionieren? |
||
- Zuletzt bearbeitet von Phlox am Sa, Okt 11, 2008 12:03, insgesamt 4-mal bearbeitet
![]() |
Falling.downBetreff: Strichcodes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir funktionieren die Strichcodes =)
sieht gut aus! |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist echt kewl & interessant ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich meinte eigentlich mit einem Strichcodescanner.
Schön, dass es euch gefällt. EDIT: Kleines Update... *am Ende wird nun richtig gezeichnet! EDIT2:Update!!!! Wichtig!! Sonst malt ihr in den Imagebuffer!!! MfG |
||
- Zuletzt bearbeitet von Phlox am Fr, Okt 10, 2008 13:24, insgesamt einmal bearbeitet
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn hier in Hessen die Schule wieder anfängt kann ichs mal testen, da ich im Büchereiteam bin und wir nen Scanner haben um den Leuten einzuscannen welche Bücher sie haben... | ||
dgxjerry |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ach, du auch? Ich finds immer lustig, dass ich so die ersten und letzten 2 wochen schule schwänzen kann ^^
Also es wär echt cool wenns in unser System in der Schule passt, weil wir die Strichcodes im Moment kaufen müssen. |
||
I don't suffer from insanity - I enjoy every minute of it!
It's not a bug - It's a feature! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group