From: D Yuniskis on
1 Lucky Texan wrote:
> If it is extremely important to decrease the odds of scanning a false

-----------^^^^^^^^^

No. I just don't want to end up "being unlucky" and *chosing*
a symbology/format that I later discover some vendor is using
to label their parts; or their shipping containers; or their
invoices; or...

(labels are physical items so changes can be expensive)

> positive, perhaps there could be special lighting or filters used.
> maybe a UV illuminated label or a specific color/special inks?
>
> this may be overkill as capacity - but might be easily recognized as
> the 'correct' label due to color;
> http://en.wikipedia.org/wiki/High_Capacity_Color_Barcode

I suspect readers are expensive. And, if it is unique today,
will it be tomorrow? (I suspect that particular code will
go away -- too expensive to produce and scan when compared to
other monochromatic 2D codes)
From: D Yuniskis on
Hi Walter,

Walter Banks wrote:
>
> D Yuniskis wrote:
>
>> The problem with the UPC route is it would cause you to use
>> up huge blocks of numbers needlessly. E.g., imagine if
>> UPS/FedEx used UPC labels as their "package identifiers".
>> These are essentially disposable identifiers yet putting
>> them into a shared/administered namespace would waste
>> big pieces of that namespace needlessly.
>
> UPC registration comes in two parts. A registered
> part identifying the owner and a block of numbers
> for the registered owner to use.

Yes, similar to OUI's, ISBN publishers, etc.

>>> False positives are rare, once format, validation and context
>> Only if you can pick a unique combination of the above!
>> Doing this blindly has no guarantees. As I said, if I
>> arbitrarily picked a 6 character Code 128 identifier
>> and used that, eventually I *will* scan a label on a Dell
>> PC and find a coincidental match with some other object
>> in my database. Granted, you can recover from this.
>> But, it is a problem that need not happen if I had picked
>> some other scheme.
>
> Barcodes can be made arbitrarily reliable and unique by
> trading information space for reliability. Using a standard
> transport layer and modest amount of validation of the
> record layer can be very reliable. Changing barcode
> format to an obscure format will not change the
> overall reliability very much.

It doesn;t affect the reliability of the *scanning* (decoding).
But, can affect how likely you are to encounter a foreign
label (same symbology, etc.) and misrecognize it as one of
your own.

> In a well implemented barcode system false positives
> are rare.
>
>> Yes. So you either have to know which barcode to scan
>> or have to encode information in the label that lets
>> the system figure out which label you've scanned and
>> prompt you to scan some other (if it is awaiting some
>> specific piece of information).
>>
>> I want to be able to have a label scanned and be able
>> to tell the user authoritatively that it is the "right"
>> label to scan and/or the right label 9item) he is looking
>> for.
>
> In your proposal, some of the symbol space is translated
> into the transportation layer. It is a tradoff but not a
> significant one.

Again, I'm just creating simple identifiers. There is no
semantic content in the label. That all resides in a
database.

All the label needs to do is say:
- this is my identifier
- I *am* one of "your" labels and not something that simply
"looks" like one (at whatever level of detail)

>>>> I wonder how many Code 128 labels
>>>> have "SN" (Serial Number) as their first two characters?
>>> Probably quite a few and a lot more Code39. Fewer
>>> using the same field format for the actual serial number
>>> fields which encode manufacture data, product id and
>>> actual identifying number.
>> But 123-45-5678 from Dell means something different from
>> 12-34-556-78 from T.I. (bogus examples). I.e. the
>> namespace (messagespace) isn't standardized. I suspect
>> folks like Dell make this work by having *lengthy* labels,
>> possibly with large hamming distances or lots of enforced
>> redundancy -- and by controlling the items that can
>> get "on the floor" *with* "foreign labels".
>
> The Dell barcodes are on the bottom of most laptops, most
> are actually quite short. They have made the choice to scan
> the appropriate label. Interesting enough the 6 or 7 character
> service tag is still not likely to be miss read. It is has an alpha
> numeric format with record type information built into the
> order and range of the alphanumeric characters.

So they (Dell) have constrained their choice of "valid"
service tag identifiers. But that doesn't prevent me from
reading one of their service tags and interpreting it
as if it was one of *my* "identifier labels" (assuming
I adopted a seven character alphanumeric identifier in
the same symbology). Granted, the chances of hitting
a *particular* service tag are slim. But, depending on
how you create your (my) identifiers (does AAAABC come
before or after 123456?), you could bump into their
portion of that message space almost immediately (or not).

>> Loosely speaking, inventory tracking. But, using the labels
>> throughout -- to identify parts, to identify stock locations,
>> to identify shipping manifests, to identify the individuals
>> picking/packaging/shipping the items, etc. Their just
>> manifestations of "universal identifiers". I just want to
>> minimize the chance of some *other* (foreign) label being
>> erroneously interpreted as "one of mine" and having the
>> process stop while folks sort out why the item the item they
>> seek isn't in "this" location ("Oh, you scanned a barcode
>> that *Digikey* had applied to a component; *not* the little
>> blue plastic placard that we use to identify locations!")
>
> What you are trying to do is a common problem. Making
> the barcode unreadable to most readers is one solution
> but there are many other effective solutions most related
> to either central registries or common transport layer
> and symbols with individual record format.
>
> False reads of the kind you describe almost never happens
> in a real environment. Too many simultaneous failures
> would need to happen. Barcode standards evolved in
> order to prevent chaos of this type.

The standards for most codes don't prescribe anything about
their deployment. They just handle encoding data into a
particular format/symbology.

Most vendors have added a litany of odd "hacks" to allow you
to bend their scanner to *your* hacks (i.e., stripping
off fixed prefixes, etc.).

I think the "chaos" is typically averted simply by limiting
the types of labels encountered in a particular application
domain. I.e., I doubt any of the scanners on Dell;s
assembly line are configured to recognize 2-of-5 labels.
Likewise, I doubt any used in the supermarket are likely
to read Code 39 label. I.e., the nature of the business
tries to enforce (implicitly or explicitly) some discipline
on the labels encountered.

E.g., none of my Digikey parts ever carry a Codabar label
(though I imagine there might be some that carry a UPC
label)

So, you either tailor the solution to a particular
industry or application (e.g., MSI tends to be used
in inventory control) *or* come up with an approach
that can coexist with competing/interfering symbologies
and message formats (e.g., "YUNISKIS 12345 SIKSINUY")

I suspect if I make a 'reasonably good' *choice*
(i.e., not *design*) and put enough other aspects
into the overall "system" (e.g., "The labels
look like *this*"), then the real chances of problems
are minimal.

OTOH, if I just *pick* something and hope for the
best, Murphy will be waiting around the corner
with a SEG.
From: Grant on
On Tue, 25 May 2010 05:27:32 -0700, D Yuniskis <not.going.to.be(a)seen.com> wrote:

>1 Lucky Texan wrote:
>> On May 24, 10:12 pm, D Yuniskis <not.going.to...(a)seen.com> wrote:
>
>>> (note there are always semantic checks that can be applied
>>> after a label is "accepted" so the chances are probably
>>> off the scale)
>>
>> Just as an aside, there's an app for the iphone that will read several
>> 2d codes including the color one (microsoft?).
>>
>> I think using an uncommon symbology with a custom character imbedded
>> is a good approach. Perhaps use an odd ascii escape code, greek
>> charater or alt255 or?
>
>Only a few codes support the full range of ASCII characters (e.g.,
>Code 128); others support an alphanumeric subset (Code 39, Code 93),
>etc. I only need numeric identifiers so using one of these codes
>doesn't buy me much. Though I could examine their encodings
>and pick a subset of symbols -- not necessarily the numeric
>digits -- to map to '0' thru '9' and possibly increase the Hamming
>distance to buy me something (e.g., any label containing *any*
>of the characters that I *don't* map to '0' thru '9' would be
>known to be "foreign")

Also use a fairly long checksum, as too short a checksum may allow
false positives through.

Grant.
--
http://bugs.id.au/
From: Steve Watt on
In article <htf5eg$9sc$1(a)speranza.aioe.org>,
D Yuniskis <not.going.to.be(a)seen.com> wrote:
>tlbs101 wrote:
>> On May 24, 3:06 pm, tlbs101 <tlbs...(a)excite.com> wrote:
>>> On May 24, 9:36 am, D Yuniskis <not.going.to...(a)seen.com> wrote:
>>>
>>>> I need to pick a barcode symbology that is unlinkey to be
>>>> encountered in day-to-day items to minimize conflicts. E.g.,
>>>> UPC is non-starter.
[ snip ]
>>>> But, I'd be open to other suggestions. [I can't roll my own
>>>> code as I want to use COTS scanners.]
>>>> Thanks!
>
>Rather, the problem is ensuring that the scanner doesn't
>"hit" on a label that isn't "mine".

This part's tough for COTS/surplus scanners. Admittedly, it's
been nearly 20 years since I looked around in the market, but
I couldn't find any back then that allowed suppression of the
scan acknowledge "beep". My solution was to find readers that
didn't have a beep and use the terminal[1]'s bell to signify a good
read.

>So far, it seems like Codabar fits the bill in terms of
>being recognizable by OTS scanners, rare enough that it is
>unlikely to "pop up" out of pure coincidence *and* tweakable
>enough that I can further minimize the chance of false positives
>by "abusing" certain features of the code. :-/

Codabar is still pretty common. I'm staring at a Dell machine
with a M$ tax sticker on it that has two what look like Codabar
lines and a 2D line.

I seem to recall Codabar being very common in libraries, too.

>I'll configure the scanner to tag the data with the code
>used and parse that in addition to the data. I.e., if the
>data isn't in the expected symbology, then it can't be
>"one of my labels".

Back then, I chose code 39, and used an additional check
digit inside the regular scan path.

[1] Yes, I'm probably showing my age.
--
Steve Watt KD6GGD PP-ASEL-IA ICBM: 121W 56' 57.5" / 37N 20' 15.3"
Internet: steve @ Watt.COM Whois: SW32-ARIN
Free time? There's no such thing. It just comes in varying prices...
From: D Yuniskis on
Hi Steve,

Steve Watt wrote:
>> Rather, the problem is ensuring that the scanner doesn't
>> "hit" on a label that isn't "mine".
>
> This part's tough for COTS/surplus scanners. Admittedly, it's
> been nearly 20 years since I looked around in the market, but
> I couldn't find any back then that allowed suppression of the
> scan acknowledge "beep". My solution was to find readers that
> didn't have a beep and use the terminal[1]'s bell to signify a good
> read.

I've found some that will let you turn off the beep.
Some will even let you *drive* the beep (^G) with
an appropriate interface (i.e., duplex).

If push comes to shove, I can cut the leads to the
transducer (or pour epoxy on it so it can't flex
audibly enough :> ). But, having the beep *in*
the scanner is a real win (especially for the cordless
scanners) as it is "right there" with the user
(instead of at the other end of the cord)

>> So far, it seems like Codabar fits the bill in terms of
>> being recognizable by OTS scanners, rare enough that it is
>> unlikely to "pop up" out of pure coincidence *and* tweakable
>> enough that I can further minimize the chance of false positives
>> by "abusing" certain features of the code. :-/
>
> Codabar is still pretty common. I'm staring at a Dell machine
> with a M$ tax sticker on it that has two what look like Codabar
> lines and a 2D line.

The Dells that I have use 7 character Code128 label for the service
tag, Code 128 on the motherboard, etc. Even the XP license sticker
is Code128 (two linear codes and a 2D code).

I have a little Symbol PDA (Palm III with barcode reader built
in) that has a handy little diagnostic application. Scan
a label and it tells you the label's contents as well as the
symbology used. Quite handy! :>

> I seem to recall Codabar being very common in libraries, too.

Yes.

>> I'll configure the scanner to tag the data with the code
>> used and parse that in addition to the data. I.e., if the
>> data isn't in the expected symbology, then it can't be
>> "one of my labels".
>
> Back then, I chose code 39, and used an additional check
> digit inside the regular scan path.

I think there's enough ways that I can "bend" the labels'
format and content that I should be able to drive the
probability of a "bogus read" into the mud. My biggest
fear is *picking* something (i.e., without careful
consideration) and discovering after-the-fact that
some supplier *also* uses that and there are conflicts
every 10 minutes! :< Especially after having tagged
everything! :-/

> [1] Yes, I'm probably showing my age.

The fact that you said *bell* (instead of *beep*) gave
you away! (I think bells went away with the ASR33...)

;-)