drawing a Barcode without a Barcode font

Matthias Rebbe matthias_livecode_150811 at m-r-d.de
Sun Jul 22 17:18:40 EDT 2018


I have to add something.

As I wrote, we were able to successfully scan the labels. This is true as long as we print the labels with a laser printer.

If we print the labels with a thermo printer (203 dpi) then the code cannot be scanned with the values i posted before.
We  had set the line thickness of the rectangles to 0 and had to increase the width of the black bars and decrease the width of the clear ones.

So the code below shows the settings which allow us to scan the labels with a Toshiba B-EV4D and a Zebra LP 2844.

 put “3" into tNarrow
 put “6" into tWide
 set the width of grc "narrowC" to (tNarrow - 2)
 set the width of grc "narrowB" to (tNarrow -3)
 set the width of grc "wideC" to tWide
 set the width of grc "wideB" to tWide

Regards,

Matthias Rebbe


> Am 20.07.2018 um 13:31 schrieb Matthias Rebbe via use-livecode <use-livecode at lists.runrev.com>:
> 
> We tried here with iPhone and also with an USB scanner. Both devices scanned the code successfully.
> 
> I have just finished a program for shipment. It fetches customer and invoice data from the accounting software and creates then the shipment labels including a Code25i barcode and a QR code. The carrier is Trans-o-Flex. I need to send some sample labels to their IT department. They will check if the labels are readable by their scanners. But i am now confident, that this will work on their side also.
> 
> Thanks again.
> 
> Matthias
> 
> 
> 
>> Am 20.07.2018 um 11:31 schrieb Mike Bonner via use-livecode <use-livecode at lists.runrev.com>:
>> 
>> Very cool!  Does it actually produce a code that can be scanned?
>> 
>> On Fri, Jul 20, 2018 at 3:25 AM Matthias Rebbe via use-livecode <
>> use-livecode at lists.runrev.com> wrote:
>> 
>>> Mike
>>> 
>>> you´re awesome. That is already an almost complete solution to my
>>> question. Never had expected that. Thank you very much.
>>> I´ve made some little changes. One among of them is:
>>> To have all the separate bars of the barcode in a group, i changed the
>>> lines where the grc is cloned
>>> to for example        copy grc “narrowB” to grp “barcode2of5”
>>> 
>>> Here´s now my code to convert the nNnNN…. string to Barcode
>>> 
>>> local tLast
>>> on mouseup
>>>  if there is a grp "barcode2of5" then delete grp "barcode2of5"
>>>  -- now change the width of the template graphics
>>>  put "2" into tNarrow
>>>  put "4" into tWide
>>>  set the width of grc "narrowC" to tNarrow
>>>  set the width of grc "narrowB" to tNarrow
>>>  set the width of grc "wideC" to tWide
>>>  set the width of grc "wideB" to tWide
>>>  put "0" into tHorAdjust -- allows to put a gap beween the separate bars.
>>>  put "60,286" into tBarTopLeft -- defines where the first bar is placed
>>>  put empty into tLast
>>>  put fld "2of5" into tChars -- the field with your wNnnW string
>>>  set the casesensitive to true -- to differentiate case of course
>>>  create grp "barcode2of5"
>>>  repeat for each char tChar in tChars
>>>     switch tChar
>>>        case "N"
>>>           -- checks the char, and clones the matching bar.
>>>           --if its the first time through, places it at astart location
>>>           -- then uses the id of the most recent bar forplacement
>>> purposes
>>>           --clone grc "narrowB"
>>>           copy grc "narrowB" to grp "barcode2of5"
>>>           if tLast is empty then
>>>              set the topleft of the last grc to tBarTopLeft
>>>           else
>>>              set the topleft of the last grc to horAdjust(tHorAdjust)
>>>           end if
>>>           break
>>>        case "n"
>>>           --clone grc "narrowC"
>>>           copy grc "narrowC" to grp "barcode2of5"
>>>           if tLast is empty then
>>>              set the topleft of the last grc to tBarTopLeft
>>>           else
>>>              set the topleft of the last grc to horAdjust(tHorAdjust)
>>>           end if
>>>           break
>>>        case "W"
>>>           --clone grc "wideB"
>>>           copy grc "wideB" to grp "barcode2of5"
>>>           if tLast is empty then
>>>              set the topleft of the last grc to tBarTopLeft
>>>           else
>>>              set the topleft of the last grc to horAdjust(tHorAdjust)
>>>           end if
>>>           break
>>>        case "w"
>>>           --clone grc "widec"
>>>           copy grc "widec" to grp "barcode2of5"
>>>           if tLast is empty then
>>>              set the topleft of the last grc to tBarTopLeft
>>>           else
>>>              set the topleft of the last grc to horAdjust(tHorAdjust)
>>>           end if
>>>           break
>>>     end switch
>>>     put the short id of the last grc into tLast -- the id of the most
>>> recently placed bar
>>>  end repeat
>>>  set the height of grp "barcode2of5" to 69
>>>  set the width of grp "barcode2of5" to 360
>>> end mouseup
>>> 
>>> --This function allows a horizontal adjustment of the single bars.
>>> function horAdjust tHorAdjust
>>>  put the topright of grc id tLast into tTMP
>>>  set the itemdelimiter to ","
>>>  add tHorAdjust to item 1 of tTMP
>>>  return tTMP
>>> end horAdjust
>>> 
>>> Again, thank you very much for your help.
>>> 
>>> Regards,
>>> 
>>> Matthias
>>> 
>>> 
>>>> Am 20.07.2018 um 01:01 schrieb Mike Bonner via use-livecode <
>>> use-livecode at lists.runrev.com>:
>>>> 
>>>> Not sure if it will work for your purpose, but as a test I created for
>>>> graphic lines, 1 narrow black, 1 wider black, duplicated them and set the
>>>> blendlevel of the copies so that they're transparent.
>>>> 
>>>> Grcs are named narrowB, wideB, narrowC and wideC (b for black, c for
>>> clear)
>>>> 
>>>> Then used the following code (and your example string from above with the
>>>> WWnNw stuff) to generate a barcode.
>>>> 
>>>> on mouseup
>>>> put empty into tLast
>>>> put field 1 into tChars -- the field with your wNnnW string
>>>> set the casesensitive to true -- to differentiate case of course
>>>> repeat for each char tChar in tChars
>>>>    switch tChar
>>>>       case "N" -- checks the char, and clones the matching bar.
>>>>                      --if its the first time through, places it at a
>>>> start location
>>>>                      -- then uses the id of the most recent bar for
>>>> placement purposes
>>>>          clone grc "narrowB"
>>>>          if tLast is empty then
>>>>             set the topleft of the last grc to 10,50
>>>>          else
>>>>             set the topleft of the last grc to the topright of grc id
>>>> tLast
>>>>          end if
>>>>          break
>>>>       case "n"
>>>>          clone grc "narrowC"
>>>>          if tLast is empty then
>>>>             set the topleft of the last grc to 10,50
>>>>          else
>>>>             set the topleft of the last grc to the topright of grc id
>>>> tLast
>>>>          end if
>>>>          break
>>>>       case "W"
>>>>          clone grc "wideB"
>>>>          if tLast is empty then
>>>>             set the topleft of the last grc to 10,50
>>>>          else
>>>>             set the topleft of the last grc to the topright of grc id
>>>> tLast
>>>>          end if
>>>>          break
>>>>       case "w"
>>>>          clone grc "widec"
>>>>          if tLast is empty then
>>>>             set the topleft of the last grc to 10,50
>>>>          else
>>>>             set the topleft of the last grc to the topright of grc id
>>>> tLast
>>>>          end if
>>>>          break
>>>> 
>>>>    end switch
>>>>    put the short id of the last grc into tLast -- the id of the most
>>>> recently placed bar
>>>> end repeat
>>>> end mouseup
>>>> 
>>>> Spacing and line size might need to be tweaked, but it seems like this
>>>> would be relatively straight forward.
>>>> 
>>>> On Thu, Jul 19, 2018 at 4:30 PM Bob Sneidar via use-livecode <
>>>> use-livecode at lists.runrev.com> wrote:
>>>> 
>>>>> I think the trick will be drawing large graphics one at a time and
>>>>> properly spaced at several times their finished size, perhaps off
>>> screen,
>>>>> then getting a snapshot of the result and scaling it down. Not sure how
>>>>> picky the readers will be.
>>>>> 
>>>>> Bob S
>>>>> 
>>>>> 
>>>>>> On Jul 19, 2018, at 15:06 , Matthias Rebbe via use-livecode <
>>>>> use-livecode at lists.runrev.com> wrote:
>>>>>> 
>>>>>> Currently i am using a special 2of5i barcode font. The font .has only
>>>>> four characters (bars) in its set.
>>>>>> The code displays a
>>>>>> narrow space (blank) bar when the character is n
>>>>>> narrow black bar when N
>>>>>> wide space when w
>>>>>> wide black bar when W
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode at lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>>>>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> 
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list