d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > Need Help Tweaking Some Code
Add Reply New Topic New Poll
Member
Posts: 4,905
Joined: Feb 19 2012
Gold: 0.00
Apr 3 2019 10:26am
I have a VBNet barcode creator that I've cobbled together from a few sources into a working one that suits my needs.

The only issue it, if the length of the string exceeds 10 characters the barcode does not print right anymore, it becomes distorted and cannot scan.

Looking for some help with this, will pay 548FG if that seems fair to you, since you shouldn't need to rewrite I'm sure there's just something I fooked up along the way. If it is something that works well and you feel need more compensation let me know and we can work on something.

LMK if interested.


Code
Imports System
Imports System.IO
Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Windows.Forms

Public Class BarcodeForm

Dim BINARY As String
Dim CheckSumVal As Integer
Dim BINVAL As String
Dim BINARYLength As Int32

Friend WithEvents printDoc As New PrintDocument()
Dim bmpBarcode As Bitmap

Private Sub BarcodeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load

picBarcode.BackColor = Color.White

Dim FontSize As Integer = 0
Dim LengthOfBarcode As Integer = 10

FontSize = 1
Do Until FontSize = 72
cboSize.Items.Add(FontSize)
FontSize = FontSize + 1
Loop

Do Until LengthOfBarcode = 110
cboLength.Items.Add(LengthOfBarcode)
LengthOfBarcode = LengthOfBarcode + 10
Loop

cboSize.SelectedIndex = 0
cboLength.SelectedIndex = 9

End Sub

Private Sub btnGenerate_Click(sender As Object, e As EventArgs)


End Sub

Private Sub GenerateBINARY(Input As String)

BINARY = 0

Dim CharVal As Integer = 0
Dim CharCount As Integer = 0
Dim GrandCharCount As Integer = 0
Dim CheckSum As Integer = 0

For Each Item As Char In Input

Select Case Item
Case = " "
BINARY = BINARY & "11011001100"
CharVal = 0
Case = "!"
BINARY = BINARY & "11001101100"
CharVal = 1
Case = """"
BINARY = BINARY & "11001100110"
CharVal = 2
Case = "#"
BINARY = BINARY & "10010011000"
CharVal = 3
Case = "$"
BINARY = BINARY & "10010001100"
CharVal = 4
Case "%"
BINARY = BINARY & "10001001100"
CharVal = 5
Case "&"
BINARY = BINARY & "10011001000"
CharVal = 6
Case "'"
BINARY = BINARY & "10011000100"
CharVal = 7
Case "("
BINARY = BINARY & "10001100100"
CharVal = 8
Case ")"
BINARY = BINARY & "11001001000"
CharVal = 9
Case "*"
BINARY = BINARY & "11001000100"
CharVal = 10
Case "+"
BINARY = BINARY & "11000100100"
CharVal = 11
Case ","
BINARY = BINARY & "10110011100"
CharVal = 12
Case "-"
BINARY = BINARY & "10011011100"
CharVal = 13
Case "."
BINARY = BINARY & "10011001110"
CharVal = 14
Case "/"
BINARY = BINARY & "10111001100"
CharVal = 15
Case "0"
BINARY = BINARY & "10011101100"
CharVal = 16
Case "1"
BINARY = BINARY & "10011100110"
CharVal = 17
Case "2"
BINARY = BINARY & "11001110010"
CharVal = 18
Case "3"
BINARY = BINARY & "11001011100"
CharVal = 19
Case "4"
BINARY = BINARY & "11001001110"
CharVal = 20
Case "5"
BINARY = BINARY & "11011100100"
CharVal = 21
Case "6"
BINARY = BINARY & "11001110100"
CharVal = 22
Case "7"
BINARY = BINARY & "11101101110"
CharVal = 23
Case "8"
BINARY = BINARY & "11101001100"
CharVal = 24
Case "9"
BINARY = BINARY & "11100101100"
CharVal = 25
Case ":"
BINARY = BINARY & "11100100110"
CharVal = 26
Case " ;"
BINARY = BINARY & "11101100100"
CharVal = 27
Case "<"
BINARY = BINARY & "11100110100"
CharVal = 28
Case "="
BINARY = BINARY & "11100110010"
CharVal = 29
Case ">"
BINARY = BINARY & "11011011000"
CharVal = 30
Case " ?"
BINARY = BINARY & "11011000110"
CharVal = 31
Case "@"
BINARY = BINARY & "11000110110"
CharVal = 32
Case "A"
BINARY = BINARY & "10100011000"
CharVal = 33
Case "B"
BINARY = BINARY & "10001011000"
CharVal = 34
Case "C"
BINARY = BINARY & "10001000110"
CharVal = 35
Case "D"
BINARY = BINARY & "10110001000"
CharVal = 36
Case "E"
BINARY = BINARY & "10001101000"
CharVal = 37
Case "F"
BINARY = BINARY & "10001100010"
CharVal = 38
Case "G"
BINARY = BINARY & "11010001000"
CharVal = 39
Case "H"
BINARY = BINARY & "11000101000"
CharVal = 40
Case "I"
BINARY = BINARY & "11000100010"
CharVal = 41
Case "J"
BINARY = BINARY & "10110111000"
CharVal = 42
Case "K"
BINARY = BINARY & "10110001110"
CharVal = 43
Case "L"
BINARY = BINARY & "10001101110"
CharVal = 44
Case "M"
BINARY = BINARY & "10111011000"
CharVal = 45
Case "N"
BINARY = BINARY & "10111000110"
CharVal = 46
Case "O"
BINARY = BINARY & "10001110110"
CharVal = 47
Case "P"
BINARY = BINARY & "11101110110"
CharVal = 48
Case "Q"
BINARY = BINARY & "11010001110"
CharVal = 49
Case "R"
BINARY = BINARY & "11000101110"
CharVal = 50
Case "S"
BINARY = BINARY & "11011101000"
CharVal = 51
Case "T"
BINARY = BINARY & "11011100010"
CharVal = 52
Case "U"
BINARY = BINARY & "11011101110"
CharVal = 53
Case "V"
BINARY = BINARY & "11101011000"
CharVal = 54
Case "W"
BINARY = BINARY & "11101000110"
CharVal = 55
Case "X"
BINARY = BINARY & "11100010110"
CharVal = 56
Case "Y"
BINARY = BINARY & "11101101000"
CharVal = 57
Case "Z"
BINARY = BINARY & "11101100010"
CharVal = 58
Case "["
BINARY = BINARY & "11100011010"
CharVal = 59
Case "\"
BINARY = BINARY & "11101111010"
CharVal = 60
Case "]"
BINARY = BINARY & "11001000010"
CharVal = 61
Case "^"
BINARY = BINARY & "11110001010"
CharVal = 62
Case "_"
BINARY = BINARY & "10100110000"
CharVal = 63
Case "`"
BINARY = BINARY & "10100001100"
CharVal = 64
Case "a"
BINARY = BINARY & "10010110000"
CharVal = 65
Case "b"
BINARY = BINARY & "10010000110"
CharVal = 66
Case "c"
BINARY = BINARY & "10000101100"
CharVal = 67
Case "d"
BINARY = BINARY & "10000100110"
CharVal = 68
Case "e"
BINARY = BINARY & "10110010000"
CharVal = 69
Case "f"
BINARY = BINARY & "10110000100"
CharVal = 70
Case "g"
BINARY = BINARY & "10011010000"
CharVal = 71
Case "h"
BINARY = BINARY & "10011000010"
CharVal = 72
Case "i"
BINARY = BINARY & "10000110100"
CharVal = 73
Case "j"
BINARY = BINARY & "10000110010"
CharVal = 74
Case "k"
BINARY = BINARY & "11000010010"
CharVal = 75
Case "l"
BINARY = BINARY & "11001010000"
CharVal = 76
Case "m"
BINARY = BINARY & "11110111010"
CharVal = 77
Case "n"
BINARY = BINARY & "11000010100"
CharVal = 78
Case "o"
BINARY = BINARY & "10001111010"
CharVal = 79
Case "p"
BINARY = BINARY & "10100111100"
CharVal = 80
Case "q"
BINARY = BINARY & "10010111100"
CharVal = 81
Case "r"
BINARY = BINARY & "10010011110"
CharVal = 82
Case "s"
BINARY = BINARY & "10111100100"
CharVal = 83
Case "t"
BINARY = BINARY & "10011110100"
CharVal = 84
Case "u"
BINARY = BINARY & "10011110010"
CharVal = 85
Case "v"
BINARY = BINARY & "11110100100"
CharVal = 86
Case "w"
BINARY = BINARY & "11110010100"
CharVal = 87
Case "x"
BINARY = BINARY & "11110010010"
CharVal = 88
Case "y"
BINARY = BINARY & "11011011110"
CharVal = 89
Case "z"
BINARY = BINARY & "11011110110"
CharVal = 90
Case "{"
BINARY = BINARY & "11110110110"
CharVal = 91
Case "|"
BINARY = BINARY & "10101111000"
CharVal = 92
Case "}"
BINARY = BINARY & "10100011110"
CharVal = 93
Case "~"
BINARY = BINARY & "10001011110"
CharVal = 94
End Select
CharCount = CharCount + 1
GrandCharCount = CharVal * CharCount
CheckSum = CheckSum + GrandCharCount

Next

'Include start code B
CheckSum = CheckSum + 104
'Get the remainder
CheckSumVal = CheckSum Mod 103

'Set it to zero before we generate it
BINVAL = 0
GenerateCheckSum(CheckSumVal)

'Start
BINARY = "00011010010000" & BINARY
'End
BINARY = BINARY & BINVAL & "1100011101011000"
'

BINARYLength = 0
For Each dig As String In BINARY
CharCount = CharCount + 1
Next

End Sub

Private Sub GenerateCheckSum(Dig As Integer)

Select Case Dig
Case "0"
BINVAL = "11011001100"
Case "1"
BINVAL = "11001101100"
Case "2"
BINVAL = "11001100110"
Case "3"
BINVAL = "10010011000"
Case "4"
BINVAL = "10010001100"
Case "5"
BINVAL = "10001001100"
Case "6"
BINVAL = "10011001000"
Case "7"
BINVAL = "10011000100"
Case "8"
BINVAL = "10001100100"
Case "9"
BINVAL = "11001001000"
Case "10"
BINVAL = "11001000100"
Case "11"
BINVAL = "11000100100"
Case "12"
BINVAL = "10110011100"
Case "13"
BINVAL = "10011011100"
Case "14"
BINVAL = "10011001110"
Case "15"
BINVAL = "10111001100"
Case "16"
BINVAL = "10011101100"
Case "17"
BINVAL = "10011100110"
Case "18"
BINVAL = "11001110010"
Case "19"
BINVAL = "11001011100"
Case "20"
BINVAL = "11001001110"
Case "21"
BINVAL = "11011100100"
Case "22"
BINVAL = "11001110100"
Case "23"
BINVAL = "11101101110"
Case "24"
BINVAL = "11101001100"
Case "25"
BINVAL = "11100101100"
Case "26"
BINVAL = "11100100110"
Case "27"
BINVAL = "11101100100"
Case "28"
BINVAL = "11100110100"
Case "29"
BINVAL = "11100110010"
Case "30"
BINVAL = "11011011000"
Case "31"
BINVAL = "11011000110"
Case "32"
BINVAL = "11000110110"
Case "33"
BINVAL = "10100011000"
Case "34"
BINVAL = "10001011000"
Case "35"
BINVAL = "10001000110"
Case "36"
BINVAL = "10110001000"
Case "37"
BINVAL = "10001101000"
Case "38"
BINVAL = "10001100010"
Case "39"
BINVAL = "11010001000"
Case "40"
BINVAL = "11000101000"
Case "41"
BINVAL = "11000100010"
Case "42"
BINVAL = "10110111000"
Case "43"
BINVAL = "10110001110"
Case "44"
BINVAL = "10001101110"
Case "45"
BINVAL = "10111011000"
Case "46"
BINVAL = "10111000110"
Case "47"
BINVAL = "10001110110"
Case "48"
BINVAL = "11101110110"
Case "49"
BINVAL = "11010001110"
Case "50"
BINVAL = "11000101110"
Case "51"
BINVAL = "11011101000"
Case "52"
BINVAL = "11011100010"
Case "53"
BINVAL = "11011101110"
Case "54"
BINVAL = "11101011000"
Case "55"
BINVAL = "11101000110"
Case "56"
BINVAL = "11100010110"
Case "57"
BINVAL = "11101101000"
Case "58"
BINVAL = "11101100010"
Case "59"
BINVAL = "11100011010"
Case "60"
BINVAL = "11101111010"
Case "61"
BINVAL = "11001000010"
Case "62"
BINVAL = "11110001010"
Case "63"
BINVAL = "10100110000"
Case "64"
BINVAL = "10100001100"
Case "65"
BINVAL = "10010110000"
Case "66"
BINVAL = "10010000110"
Case "67"
BINVAL = "10000101100"
Case "68"
BINVAL = "10000100110"
Case "69"
BINVAL = "10110010000"
Case "70"
BINVAL = "10110000100"
Case "71"
BINVAL = "10011010000"
Case "72"
BINVAL = "10011000010"
Case "73"
BINVAL = "10000110100"
Case "74"
BINVAL = "10000110010"
Case "75"
BINVAL = "11000010010"
Case "76"
BINVAL = "11001010000"
Case "77"
BINVAL = "11110111010"
Case "78"
BINVAL = "11000010100"
Case "79"
BINVAL = "10001111010"
Case "80"
BINVAL = "10100111100"
Case "81"
BINVAL = "10010111100"
Case "82"
BINVAL = "10010011110"
Case "83"
BINVAL = "10111100100"
Case "84"
BINVAL = "10011110100"
Case "85"
BINVAL = "10011110010"
Case "86"
BINVAL = "11110100100"
Case "87"
BINVAL = "11110010100"
Case "88"
BINVAL = "11110010010"
Case "89"
BINVAL = "11011011110"
Case "90"
BINVAL = "11011110110"
Case "91"
BINVAL = "11110110110"
Case "92"
BINVAL = "10101111000"
Case "93"
BINVAL = "10100011110"
Case "94"
BINVAL = "10001011110"

End Select

End Sub

Private Sub GenerateBarcode(Input As String)

' Dim rLineWidth As Single = Convert.ToSingle(cboSize.Text)
'Dim iLineHeight As Integer = Convert.ToSingle(cboLength.Text)

Dim rLineWidth As Single = 1
Dim iLineHeight As Integer = 80

' Generate a new Bitmap
bmpBarcode = New Drawing.Bitmap(Convert.ToInt32(rLineWidth) * Input.Length, 80, Imaging.PixelFormat.Format24bppRgb)
Dim rectF As RectangleF = bmpBarcode.GetBounds(GraphicsUnit.Pixel)

Using penBlack As New Drawing.Pen(Color.Black, rLineWidth) ' Pen for black lines
Using g As Graphics = Graphics.FromImage(bmpBarcode)

g.FillRectangle(SystemBrushes.Window, rectF) ' Fill the Bitmap with white (don't need white Pen)
For iPos As Integer = 0 To Input.Length - 1

Dim rX As Single = Convert.ToSingle(iPos) * rLineWidth + rLineWidth / 2.0! ' Helper variable for X-position
If Input(iPos) = "1"c Then ' Only draw black lines
g.DrawLine(penBlack, rX, 0!, rX, Convert.ToSingle(60))
End If
Next
End Using
End Using

Using g = Graphics.FromImage(bmpBarcode)
Dim f As Font
f = New Font(New FontFamily("Century"), 8)
g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
g.DrawString(txtInput.Text, f, Brushes.Black, New PointF(0, 65))
End Using

picBarcode.SizeMode = PictureBoxSizeMode.AutoSize ' To fit PictureBox to generated Bitmap
picBarcode.Image = bmpBarcode

Clipboard.SetImage(bmpBarcode)

End Sub

Private Sub btnClear_Click(sender As Object, e As EventArgs)
picBarcode.Image = Nothing
End Sub




Private Sub btnGenerate_Click_1(sender As Object, e As EventArgs) Handles btnGenerate.Click
btnPrint.Enabled = True

GenerateBINARY(txtInput.Text)
GenerateBarcode(BINARY)
End Sub

Private Sub btnClose_Click_1(sender As Object, e As EventArgs) Handles btnClose.Click
Dim Form As New BatteriesStartForm
Form.Show()
Me.Close()
End Sub

Private Sub btnPrint_Click_1(sender As Object, e As EventArgs) Handles btnPrint.Click
Dim FileSave As String

FileSave = System.IO.Path.Combine(
My.Computer.FileSystem.SpecialDirectories.MyDocuments, "barcode.bmp")

picBarcode.Image.Save(FileSave)

Process.Start(FileSave)
End Sub
End Class


This post was edited by Damein on Apr 3 2019 10:26am
Member
Posts: 12,703
Joined: May 17 2013
Gold: 12,935.00
Apr 4 2019 04:51am
Can you post a minimum working example? So include all code that is necessary to run a generation of the barcode.
Member
Posts: 4,905
Joined: Feb 19 2012
Gold: 0.00
Apr 4 2019 10:11am
Quote (Klexmoo @ Apr 4 2019 04:51am)
Can you post a minimum working example? So include all code that is necessary to run a generation of the barcode.


The above code is what I actually use. The only things on there that don't need to be otherwise are the Clear function and close function.

Unless that doesn't make sense LMK.

For a quick start, here's the form taken out of the project and into its own stand-alone if you want;

https://www.dropbox.com/s/k9v5tmlh6v1ohy8/ExampleBarcode.zip?dl=0

This post was edited by Damein on Apr 4 2019 10:17am
Member
Posts: 12,703
Joined: May 17 2013
Gold: 12,935.00
Apr 4 2019 10:24am
Quote (Damein @ 4 Apr 2019 18:11)
The above code is what I actually use. The only things on there that don't need to be otherwise are the Clear function and close function.

Unless that doesn't make sense LMK.

For a quick start, here's the form taken out of the project and into its own stand-alone if you want;

https://www.dropbox.com/s/k9v5tmlh6v1ohy8/ExampleBarcode.zip?dl=0


I don't see the problem.

It generates the barcode properly for this string: abcdefhijklmopqr

https://imgur.com/O50KcOp

I can even scan it with my barcode scanner app just fine.

This post was edited by Klexmoo on Apr 4 2019 10:24am
Member
Posts: 4,905
Joined: Feb 19 2012
Gold: 0.00
Apr 4 2019 10:32am
Quote (Klexmoo @ Apr 4 2019 10:24am)
I don't see the problem.

It generates the barcode properly for this string: abcdefhijklmopqr

https://imgur.com/O50KcOp

I can even scan it with my barcode scanner app just fine.


Hmm, that's odd... maybe I've got something setup wrong on the printer side. I'll check back with ya. Thanks for the testing of it
Go Back To Programming & Development Topic List
Add Reply New Topic New Poll