borderAndreaVB free resources for Visual Basic developersborder
AndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2017 Andrea Tincani
:: How to Paint a ScanBar CODE39 on Printer or PictureBox

Author  

Cesar Vezga

Language  

VB5, VB6

Operating Systems  

Windows 95, 98 and NT
Module

'Put this code at a module.
'Usage: PaintCodeBar39 Printer, Xpos, Ypos, BarsHeight, WidthFactor, Text, HumanRead
' Printer.EndDoc


Public Type C39
    char As String * 1
    bar(1 To 5) As Boolean
    spe(1 To 5) As Boolean
' 5th space for character gap
End Type

Dim CODE39(43) As C39

Sub InitArray()
    CODE39(0).char = "0"
    CODE39(0).bar(1) = False
    CODE39(0).spe(1) = False
    CODE39(0).bar(2) = False
    CODE39(0).spe(2) = True
    CODE39(0).bar(3) = True
    CODE39(0).spe(3) = False
    CODE39(0).bar(4) = True
    CODE39(0).spe(4) = False
    CODE39(0).bar(5) = False
    CODE39(0).spe(5) = False
    CODE39(1).char = "1"
    CODE39(1).bar(1) = True
    CODE39(1).spe(1) = False
    CODE39(1).bar(2) = False
    CODE39(1).spe(2) = True
    CODE39(1).bar(3) = False
    CODE39(1).spe(3) = False
    CODE39(1).bar(4) = False
    CODE39(1).spe(4) = False
    CODE39(1).bar(5) = True
    CODE39(1).spe(5) = False
    CODE39(2).char = "2"
    CODE39(2).bar(1) = False
    CODE39(2).spe(1) = False
    CODE39(2).bar(2) = True
    CODE39(2).spe(2) = True
    CODE39(2).bar(3) = False
    CODE39(2).spe(3) = False
    CODE39(2).bar(4) = False
    CODE39(2).spe(4) = False
    CODE39(2).bar(5) = True
    CODE39(2).spe(5) = False
    CODE39(3).char = "3"
    CODE39(3).bar(1) = True
    CODE39(3).spe(1) = False
    CODE39(3).bar(2) = True
    CODE39(3).spe(2) = True
    CODE39(3).bar(3) = False
    CODE39(3).spe(3) = False
    CODE39(3).bar(4) = False
    CODE39(3).spe(4) = False
    CODE39(3).bar(5) = False
    CODE39(3).spe(5) = False
    CODE39(4).char = "4"
    CODE39(4).bar(1) = False
    CODE39(4).spe(1) = False
    CODE39(4).bar(2) = False
    CODE39(4).spe(2) = True
    CODE39(4).bar(3) = True
    CODE39(4).spe(3) = False
    CODE39(4).bar(4) = False
    CODE39(4).spe(4) = False
    CODE39(4).bar(5) = True
    CODE39(4).spe(5) = False
    CODE39(5).char = "5"
    CODE39(5).bar(1) = True
    CODE39(5).spe(1) = False
    CODE39(5).bar(2) = False
    CODE39(5).spe(2) = True
    CODE39(5).bar(3) = True
    CODE39(5).spe(3) = False
    CODE39(5).bar(4) = False
    CODE39(5).spe(4) = False
    CODE39(5).bar(5) = False
    CODE39(5).spe(5) = False
    CODE39(6).char = "6"
    CODE39(6).bar(1) = False
    CODE39(6).spe(1) = False
    CODE39(6).bar(2) = True
    CODE39(6).spe(2) = True
    CODE39(6).bar(3) = True
    CODE39(6).spe(3) = False
    CODE39(6).bar(4) = False
    CODE39(6).spe(4) = False
    CODE39(6).bar(5) = False
    CODE39(6).spe(5) = False
    CODE39(7).char = "7"
    CODE39(7).bar(1) = False
    CODE39(7).spe(1) = False
    CODE39(7).bar(2) = False
    CODE39(7).spe(2) = True
    CODE39(7).bar(3) = False
    CODE39(7).spe(3) = False
    CODE39(7).bar(4) = True
    CODE39(7).spe(4) = False
    CODE39(7).bar(5) = True
    CODE39(7).spe(5) = False
    CODE39(8).char = "8"
    CODE39(8).bar(1) = True
    CODE39(8).spe(1) = False
    CODE39(8).bar(2) = False
    CODE39(8).spe(2) = True
    CODE39(8).bar(3) = False
    CODE39(8).spe(3) = False
    CODE39(8).bar(4) = True
    CODE39(8).spe(4) = False
    CODE39(8).bar(5) = False
    CODE39(8).spe(5) = False
    CODE39(9).char = "9"
    CODE39(9).bar(1) = False
    CODE39(9).spe(1) = False
    CODE39(9).bar(2) = True
    CODE39(9).spe(2) = True
    CODE39(9).bar(3) = False
    CODE39(9).spe(3) = False
    CODE39(9).bar(4) = True
    CODE39(9).spe(4) = False
    CODE39(9).bar(5) = False
    CODE39(9).spe(5) = False
    CODE39(10).char = "A"
    CODE39(10).bar(1) = True
    CODE39(10).spe(1) = False
    CODE39(10).bar(2) = False
    CODE39(10).spe(2) = False
    CODE39(10).bar(3) = False
    CODE39(10).spe(3) = True
    CODE39(10).bar(4) = False
    CODE39(10).spe(4) = False
    CODE39(10).bar(5) = True
    CODE39(10).spe(5) = False
    CODE39(11).char = "B"
    CODE39(11).bar(1) = False
    CODE39(11).spe(1) = False
    CODE39(11).bar(2) = True
    CODE39(11).spe(2) = False
    CODE39(11).bar(3) = False
    CODE39(11).spe(3) = True
    CODE39(11).bar(4) = False
    CODE39(11).spe(4) = False
    CODE39(11).bar(5) = True
    CODE39(11).spe(5) = False
    CODE39(12).char = "C"
    CODE39(12).bar(1) = True
    CODE39(12).spe(1) = False
    CODE39(12).bar(2) = True
    CODE39(12).spe(2) = False
    CODE39(12).bar(3) = False
    CODE39(12).spe(3) = True
    CODE39(12).bar(4) = False
    CODE39(12).spe(4) = False
    CODE39(12).bar(5) = False
    CODE39(12).spe(5) = False
    CODE39(13).char = "D"
    CODE39(13).bar(1) = False
    CODE39(13).spe(1) = False
    CODE39(13).bar(2) = False
    CODE39(13).spe(2) = False
    CODE39(13).bar(3) = True
    CODE39(13).spe(3) = True
    CODE39(13).bar(4) = False
    CODE39(13).spe(4) = False
    CODE39(13).bar(5) = True
    CODE39(13).spe(5) = False
    CODE39(14).char = "E"
    CODE39(14).bar(1) = True
    CODE39(14).spe(1) = False
    CODE39(14).bar(2) = False
    CODE39(14).spe(2) = False
    CODE39(14).bar(3) = True
    CODE39(14).spe(3) = True
    CODE39(14).bar(4) = False
    CODE39(14).spe(4) = False
    CODE39(14).bar(5) = False
    CODE39(14).spe(5) = False
    CODE39(15).char = "F"
    CODE39(15).bar(1) = False
    CODE39(15).spe(1) = False
    CODE39(15).bar(2) = True
    CODE39(15).spe(2) = False
    CODE39(15).bar(3) = True
    CODE39(15).spe(3) = True
    CODE39(15).bar(4) = False
    CODE39(15).spe(4) = False
    CODE39(15).bar(5) = False
    CODE39(15).spe(5) = False
    CODE39(16).char = "G"
    CODE39(16).bar(1) = False
    CODE39(16).spe(1) = False
    CODE39(16).bar(2) = False
    CODE39(16).spe(2) = False
    CODE39(16).bar(3) = False
    CODE39(16).spe(3) = True
    CODE39(16).bar(4) = True
    CODE39(16).spe(4) = False
    CODE39(16).bar(5) = True
    CODE39(16).spe(5) = False
    CODE39(17).char = "H"
    CODE39(17).bar(1) = True
    CODE39(17).spe(1) = False
    CODE39(17).bar(2) = False
    CODE39(17).spe(2) = False
    CODE39(17).bar(3) = False
    CODE39(17).spe(3) = True
    CODE39(17).bar(4) = True
    CODE39(17).spe(4) = False
    CODE39(17).bar(5) = False
    CODE39(17).spe(5) = False
    CODE39(18).char = "I"
    CODE39(18).bar(1) = False
    CODE39(18).spe(1) = False
    CODE39(18).bar(2) = True
    CODE39(18).spe(2) = False
    CODE39(18).bar(3) = False
    CODE39(18).spe(3) = True
    CODE39(18).bar(4) = True
    CODE39(18).spe(4) = False
    CODE39(18).bar(5) = False
    CODE39(18).spe(5) = False
    CODE39(19).char = "J"
    CODE39(19).bar(1) = False
    CODE39(19).spe(1) = False
    CODE39(19).bar(2) = False
    CODE39(19).spe(2) = False
    CODE39(19).bar(3) = True
    CODE39(19).spe(3) = True
    CODE39(19).bar(4) = True
    CODE39(19).spe(4) = False
    CODE39(19).bar(5) = False
    CODE39(19).spe(5) = False
    CODE39(20).char = "K"
    CODE39(20).bar(1) = True
    CODE39(20).spe(1) = False
    CODE39(20).bar(2) = False
    CODE39(20).spe(2) = False
    CODE39(20).bar(3) = False
    CODE39(20).spe(3) = False
    CODE39(20).bar(4) = False
    CODE39(20).spe(4) = True
    CODE39(20).bar(5) = True
    CODE39(20).spe(5) = False
    CODE39(21).char = "L"
    CODE39(21).bar(1) = False
    CODE39(21).spe(1) = False
    CODE39(21).bar(2) = True
    CODE39(21).spe(2) = False
    CODE39(21).bar(3) = False
    CODE39(21).spe(3) = False
    CODE39(21).bar(4) = False
    CODE39(21).spe(4) = True
    CODE39(21).bar(5) = True
    CODE39(21).spe(5) = False
    CODE39(22).char = "M"
    CODE39(22).bar(1) = True
    CODE39(22).spe(1) = False
    CODE39(22).bar(2) = True
    CODE39(22).spe(2) = False
    CODE39(22).bar(3) = False
    CODE39(22).spe(3) = False
    CODE39(22).bar(4) = False
    CODE39(22).spe(4) = True
    CODE39(22).bar(5) = False
    CODE39(22).spe(5) = False
    CODE39(23).char = "N"
    CODE39(23).bar(1) = False
    CODE39(23).spe(1) = False
    CODE39(23).bar(2) = False
    CODE39(23).spe(2) = False
    CODE39(23).bar(3) = True
    CODE39(23).spe(3) = False
    CODE39(23).bar(4) = False
    CODE39(23).spe(4) = True
    CODE39(23).bar(5) = True
    CODE39(23).spe(5) = False
    CODE39(24).char = "O"
    CODE39(24).bar(1) = True
    CODE39(24).spe(1) = False
    CODE39(24).bar(2) = False
    CODE39(24).spe(2) = False
    CODE39(24).bar(3) = True
    CODE39(24).spe(3) = False
    CODE39(24).bar(4) = False
    CODE39(24).spe(4) = True
    CODE39(24).bar(5) = False
    CODE39(24).spe(5) = False
    CODE39(25).char = "P"
    CODE39(25).bar(1) = False
    CODE39(25).spe(1) = False
    CODE39(25).bar(2) = True
    CODE39(25).spe(2) = False
    CODE39(25).bar(3) = True
    CODE39(25).spe(3) = False
    CODE39(25).bar(4) = False
    CODE39(25).spe(4) = True
    CODE39(25).bar(5) = False
    CODE39(25).spe(5) = False
    CODE39(26).char = "Q"
    CODE39(26).bar(1) = False
    CODE39(26).spe(1) = False
    CODE39(26).bar(2) = False
    CODE39(26).spe(2) = False
    CODE39(26).bar(3) = False
    CODE39(26).spe(3) = False
    CODE39(26).bar(4) = True
    CODE39(26).spe(4) = True
    CODE39(26).bar(5) = True
    CODE39(26).spe(5) = False
    CODE39(27).char = "R"
    CODE39(27).bar(1) = True
    CODE39(27).spe(1) = False
    CODE39(27).bar(2) = False
    CODE39(27).spe(2) = False
    CODE39(27).bar(3) = False
    CODE39(27).spe(3) = False
    CODE39(27).bar(4) = True
    CODE39(27).spe(4) = True
    CODE39(27).bar(5) = False
    CODE39(27).spe(5) = False
    CODE39(28).char = "S"
    CODE39(28).bar(1) = False
    CODE39(28).spe(1) = False
    CODE39(28).bar(2) = True
    CODE39(28).spe(2) = False
    CODE39(28).bar(3) = False
    CODE39(28).spe(3) = False
    CODE39(28).bar(4) = True
    CODE39(28).spe(4) = True
    CODE39(28).bar(5) = False
    CODE39(28).spe(5) = False
    CODE39(29).char = "T"
    CODE39(29).bar(1) = False
    CODE39(29).spe(1) = False
    CODE39(29).bar(2) = False
    CODE39(29).spe(2) = False
    CODE39(29).bar(3) = True
    CODE39(29).spe(3) = False
    CODE39(29).bar(4) = True
    CODE39(29).spe(4) = True
    CODE39(29).bar(5) = False
    CODE39(29).spe(5) = False
    CODE39(30).char = "U"
    CODE39(30).bar(1) = True
    CODE39(30).spe(1) = True
    CODE39(30).bar(2) = False
    CODE39(30).spe(2) = False
    CODE39(30).bar(3) = False
    CODE39(30).spe(3) = False
    CODE39(30).bar(4) = False
    CODE39(30).spe(4) = False
    CODE39(30).bar(5) = True
    CODE39(30).spe(5) = False
    CODE39(31).char = "V"
    CODE39(31).bar(1) = False
    CODE39(31).spe(1) = True
    CODE39(31).bar(2) = True
    CODE39(31).spe(2) = False
    CODE39(31).bar(3) = False
    CODE39(31).spe(3) = False
    CODE39(31).bar(4) = False
    CODE39(31).spe(4) = False
    CODE39(31).bar(5) = True
    CODE39(31).spe(5) = False
    CODE39(32).char = "W"
    CODE39(32).bar(1) = True
    CODE39(32).spe(1) = True
    CODE39(32).bar(2) = True
    CODE39(32).spe(2) = False
    CODE39(32).bar(3) = False
    CODE39(32).spe(3) = False
    CODE39(32).bar(4) = False
    CODE39(32).spe(4) = False
    CODE39(32).bar(5) = False
    CODE39(32).spe(5) = False
    CODE39(33).char = "X"
    CODE39(33).bar(1) = False
    CODE39(33).spe(1) = True
    CODE39(33).bar(2) = False
    CODE39(33).spe(2) = False
    CODE39(33).bar(3) = True
    CODE39(33).spe(3) = False
    CODE39(33).bar(4) = False
    CODE39(33).spe(4) = False
    CODE39(33).bar(5) = True
    CODE39(33).spe(5) = False
    CODE39(34).char = "Y"
    CODE39(34).bar(1) = True
    CODE39(34).spe(1) = True
    CODE39(34).bar(2) = False
    CODE39(34).spe(2) = False
    CODE39(34).bar(3) = True
    CODE39(34).spe(3) = False
    CODE39(34).bar(4) = False
    CODE39(34).spe(4) = False
    CODE39(34).bar(5) = False
    CODE39(34).spe(5) = False
    CODE39(35).char = "Z"
    CODE39(35).bar(1) = False
    CODE39(35).spe(1) = True
    CODE39(35).bar(2) = True
    CODE39(35).spe(2) = False
    CODE39(35).bar(3) = True
    CODE39(35).spe(3) = False
    CODE39(35).bar(4) = False
    CODE39(35).spe(4) = False
    CODE39(35).bar(5) = False
    CODE39(35).spe(5) = False
    CODE39(36).char = "-"
    CODE39(36).bar(1) = False
    CODE39(36).spe(1) = True
    CODE39(36).bar(2) = False
    CODE39(36).spe(2) = False
    CODE39(36).bar(3) = False
    CODE39(36).spe(3) = False
    CODE39(36).bar(4) = True
    CODE39(36).spe(4) = False
    CODE39(36).bar(5) = True
    CODE39(36).spe(5) = False
    CODE39(37).char = "."
    CODE39(37).bar(1) = True
    CODE39(37).spe(1) = True
    CODE39(37).bar(2) = False
    CODE39(37).spe(2) = False
    CODE39(37).bar(3) = False
    CODE39(37).spe(3) = False
    CODE39(37).bar(4) = True
    CODE39(37).spe(4) = False
    CODE39(37).bar(5) = False
    CODE39(37).spe(5) = False
    CODE39(38).char = " "
    CODE39(38).bar(1) = False
    CODE39(38).spe(1) = True
    CODE39(38).bar(2) = True
    CODE39(38).spe(2) = False
    CODE39(38).bar(3) = False
    CODE39(38).spe(3) = False
    CODE39(38).bar(4) = True
    CODE39(38).spe(4) = False
    CODE39(38).bar(5) = False
    CODE39(38).spe(5) = False
    CODE39(39).char = "$"
    CODE39(39).bar(1) = False
    CODE39(39).spe(1) = True
    CODE39(39).bar(2) = False
    CODE39(39).spe(2) = True
    CODE39(39).bar(3) = False
    CODE39(39).spe(3) = True
    CODE39(39).bar(4) = False
    CODE39(39).spe(4) = False
    CODE39(39).bar(5) = False
    CODE39(39).spe(5) = False
    CODE39(40).char = "/"
    CODE39(40).bar(1) = False
    CODE39(40).spe(1) = True
    CODE39(40).bar(2) = False
    CODE39(40).spe(2) = True
    CODE39(40).bar(3) = False
    CODE39(40).spe(3) = False
    CODE39(40).bar(4) = False
    CODE39(40).spe(4) = True
    CODE39(40).bar(5) = False
    CODE39(40).spe(5) = False
    CODE39(41).char = "+"
    CODE39(41).bar(1) = False
    CODE39(41).spe(1) = True
    CODE39(41).bar(2) = False
    CODE39(41).spe(2) = False
    CODE39(41).bar(3) = False
    CODE39(41).spe(3) = True
    CODE39(41).bar(4) = False
    CODE39(41).spe(4) = True
    CODE39(41).bar(5) = False
    CODE39(41).spe(5) = False
    CODE39(42).char = "%"
    CODE39(42).bar(1) = False
    CODE39(42).spe(1) = False
    CODE39(42).bar(2) = False
    CODE39(42).spe(2) = True
    CODE39(42).bar(3) = False
    CODE39(42).spe(3) = True
    CODE39(42).bar(4) = False
    CODE39(42).spe(4) = True
    CODE39(42).bar(5) = False
    CODE39(42).spe(5) = False
    CODE39(43).char = "*"
    CODE39(43).bar(1) = False
    CODE39(43).spe(1) = True
    CODE39(43).bar(2) = False
    CODE39(43).spe(2) = False
    CODE39(43).bar(3) = True
    CODE39(43).spe(3) = False
    CODE39(43).bar(4) = True
    CODE39(43).spe(4) = False
    CODE39(43).bar(5) = False
    CODE39(43).spe(5) = False
End Sub

Sub PaintCodeBar39(PictObj As Object, x, y, h, wf, text As String, tf)

    InitArray

    PictObj.ScaleMode = 3
    PictObj.CurrentX = x
    PictObj.CurrentY = y

    xpos = x
    ypos = y

    text = Trim(text)

    For j = 1 To Len(text)
        d = Mid(text, j, 1)
        N39 = AscTo39(d)
        If tf Then
            PictObj.CurrentX = xpos + (16 * wf - PictObj.TextWidth(d)) / 2
            PictObj.CurrentY = y + h
            PictObj.Print d
        End If
       
'Plot 5 bars and 4 spaces and gap
        For bs = 1 To 5
           
'Bar
            If CODE39(N39).bar(bs) Then
                w = 3
'Wide
            Else
                w = 1
'Narrow
            End If
           
'Draw line for bar
            For i = 1 To w * wf
                PictObj.Line (xpos, ypos)-(xpos, ypos + h)
                xpos = xpos + 1
            Next
           
'Space
            If CODE39(N39).spe(bs) Then
                xpos = xpos + 3 * wf
'Wide
            Else
                xpos = xpos + 1 * wf
'Narrow
            End If
        Next

    Next

End Sub


Function AscTo39(c)
    AscTo39 = -1
    If c >= "0" And c <= "9" Then
        AscTo39 = Val(c)
    Else
        c = UCase(c)
        If c >= "A" And c <= "Z" Then
            AscTo39 = Asc(c) - 55
        Else
            Select Case c
            Case "-"
                AscTo39 = 36
            Case "."
                AscTo39 = 37
            Case " "
                AscTo39 = 38
            Case "*"
                AscTo39 = 43
            Case "$"
                AscTo39 = 39
            Case "/"
                AscTo39 = 40
            Case "+"
                AscTo39 = 41
            Case "%"
                AscTo39 = 42
            End Select
        End If
    End If
End Function

Usage

'To try it put this on a form command

Private Sub Command1_Click()
    PaintCodeBar39 Printer, 0,0, 50, 2, "*ABCDE*", True
    Printer.EndDoc
End Sub

:: Navigation

Home

Printing Using Visual Basic

Previous Tip

Next Tip

:: Search this site
Google
:: Sponsored Links



borderAndreaVB free resources for Visual Basic developersborder
borderAndreaVB Visual Basic and VB.NET source code resources - Copyright © 1999-2017 Andrea Tincaniborder