条码Code39扫描可靠吗?
Posted
技术标签:
【中文标题】条码Code39扫描可靠吗?【英文标题】:Is barcode Code39 scanning reliable? 【发布时间】:2013-12-12 20:10:34 【问题描述】:在我的 ios 应用程序中,我使用第 3 方扫描库来扫描 Code39 条码。该软件有时会出现扫描错误(例如,“13415566”的值返回为“U *”)。有时同样的条码可以正常工作,然后再次扫描相同的代码就会出错。
第 3 方软件供应商报告说 Code39 不是一种“可靠”的格式,并且“它没有错误保护,并且经常可能获得错误读取”。
这对我来说似乎很荒谬。有问题的代码没有校验位,但即便如此,这肯定只是扫描软件中的错误吗? Code39 是否以这种事情而闻名?如果有时“弄错”,它怎么可能成为一种采用的格式!
谢谢。
【问题讨论】:
如果您阅读有关 code39 的***文章,您会发现您的供应商是有道理的。我在票务扫描中对这类代码有个人经验,我们的专业扫描仪的故障率通常只有百分之几。这些是带有激光的设备。有时他们会在根本不是条形码的东西上看到短条形码(例如,尝试扫描你的牛仔裤)。软件的性能通常比激光差... 【参考方案1】:Code 39 的可读性应该没有大问题。当在可靠扫描很重要的应用中使用时,通常会部署 Code 39,以防止误读,其形式为模 43 校验位,扫描仪配置为在将代码传递到系统之前对其进行验证。任何半体面的条形码生成器或条形码阅读器都将支持 Code 39 校验位。
由于我没有看到您正在扫描的 Code 39 条码的打印质量,因此无法确定,但我肯定会建议您使用 Code 39 扫描质量非常差的阅读器软件。
您的条形码库可能由于以下原因而感到困惑,但如果不对设备进行大量调试,则无法确定...
下面我对齐了两个 Code 39 图像,它们是基于Barcode Writer in Pure PostScript 使用online barcode generator 创建的。上面是一个包含“U”的水平翻转图像,下面是一个包含“13415566”的图像。
从右到左阅读上图,您可以看到与下图的某些部分存在一定程度的相似性。
扫描仪可能会因为误读这个不受保护的 Code 39 而被原谅,除非它有以下针对它的内容:
在前导起始条序列之前应该有一个安静的区域(空白)。 在追踪止损柱序列之后应该会出现一个安静的区域。 “U”的条形图案并不完全正确。 假定的停止条顺序并不完全正确。【讨论】:
我认为不必责怪扫描仪。可以构建 Code 39 序列,这样,如果打印为上下带有空白的条形码,一条进入顶部并离开底部或反之亦然的对角线将“看到”一个结构完美的 Code 39 条形码,包括静区,代表虚假数据。大多数字符组合不会导致这种误读,但可能被误读的组合并不比其他组合更不容易发生。【参考方案2】:许多条码扫描仪在一行上读取黑白部分。他们不知道这条线是水平的、垂直的还是对角线的,也没有固有的方法知道这条线是从一侧“进入”条形码并从另一侧离开,还是从顶部进入,交叉条码斜对角,从底部退出。
某些条码格式(例如 Interleaved 2 of 5)以条码中通常出现的模式开始和结束 [I2of5 以 BwBw 开始并以 BBwB 结束],并且部分扫描可能会从顶部滑落 或 底部被误读,就好像它是对较短代码的有效扫描一样。其他一些条形码格式以选择的模式开始和结束,因此部分扫描无法读取为有效数据。代码 39 介于两者之间。
每个有效的代码 39 条码都以 BwBBwBBwwBw 开头,以 wBwBBwBBwwB 结尾。可以让序列 wBwBB 出现在一个字符的末尾,而 BBwwBw 出现在下一个字符的开头,它们之间只有一个“w”。如果两个这样的字符对出现在条码中,它们之间出现的字符种类有限,并且扫描在正确的位置退出第一对字符,同样在正确的位置退出第二对字符,则扫描仪可能会看到一个合法形成的条码,其内容与原始条码没有明显相似之处。故意选择符合必要标准的条码数据并试图以一定角度扫描它以产生错误读取的人会很容易从许多扫描仪中获得错误读取,但数据和扫描角度都必须“恰到好处”为了引起问题。
如果担心此类误读的可能性,可以打印条形码以确保留下代码的扫描不会被视为有效。一种简单的方法是在条形码上方和下方打印黑色,这样任何通过顶部或底部进入和/或退出的扫描都会将代码视为以异常粗的黑条开始和/或结束。在许多人们看到“堆叠”条形码的地方,它们将被一种不包含信息的点图案隔开,而是旨在确保从一行到另一行的扫描不会被认为是有效的。
【讨论】:
以上是关于条码Code39扫描可靠吗?的主要内容,如果未能解决你的问题,请参考以下文章
Crystal Reports 9.0 如何制作Code-128 的条码,扫描枪要能够扫描,使用的时Code128字体!急~~~~