在我的iOS App中,我使用第三方扫描库扫描Code39条形码。该软件有时会使扫描错误(例如,值“13415566”返回为“U *”)。有时相同的条形码工作正常,然后再次扫描相同的代码,这是错误的。
第三方软件供应商报告Code39不是“可靠”格式,并且“它没有错误保护,并且通常可能会出现错误读取”。
这对我来说似乎很荒谬。有问题的代码没有校验位,但即便如此,这肯定只是扫描软件中的一个错误? Code39是否因此类事物而闻名?如果有时候“错误”,它怎么可能成为一种采用的格式呢?
感谢。
答案 0 :(得分:4)
Code 39的可读性应该没有重大问题。当在可靠扫描很重要的应用中使用时,代码39通常部署有防止误读,形式为模43检查位,扫描器配置为在将代码传递给系统之前进行验证。任何半条形码条形码生成器或条形码阅读器都支持Code 39校验位。
由于我没有看到您正在扫描的Code 39条码的打印质量无法确定,但我肯定会建议您使用质量非常差的Code 39扫描的读卡器软件。
您的条形码库可能因以下原因而混淆,但如果没有对设备进行大量调试,则无法确定...
下面我已根据online barcode generator对齐了使用Barcode Writer in Pure PostScript创建的两个Code 39图像。顶部是包含“U”的水平翻转图像,下面是包含“13415566”的图像。
从右到左阅读顶部图像,您可以看到底部图像的某些部分存在一定程度的相似性。
扫描程序可能会因为误读了这种不受保护的Code 39而被原谅,除非它有以下内容:
答案 1 :(得分:1)
许多条形码扫描仪在一行上读取黑白部分。他们不知道这条线是水平的,垂直的还是对角线的,并且没有固有的方法可以知道线条在一侧“进入”条形码而在另一侧离开,或者如果它通过顶部进入,则交叉条形码对角线,并从底部退出。
Interleaved 2 of 5等条形码格式的开始和结束都是条形码中常见的模式[I2of5以BwBw开头并以BBwB结尾],部分扫描可能会从顶部滑落或底部被误读,好像它是对较短代码的有效扫描。一些其他条形码格式以选择的模式开始和结束,因此部分扫描无法读取为有效数据。代码39介于两者之间。
每个有效代码39条形码以BwBBwBBwwBw开头,以wBwBBwBBwwB结尾。序列wBwBB可以出现在一个字符的末尾,而BBwwBw出现在下一个字符的开头,它们之间只有一个“w”。如果条形码中出现两对这样的字符,则它们之间会出现有限的字符,并且扫描会在恰当的位置退出第一对,同样在恰当的位置退出第二对,扫描仪可能会出现会看到一个合法形成的条形码,其内容与原始条形码没有明显的相似之处。故意选择符合必要标准的条形码数据并试图以一定角度扫描它以产生错误读取的人很难从许多扫描仪获取错误读取,但数据和扫描角度都必须“恰到好处”为了引起问题。
如果担心这种误读的可能性,可以打印条形码,以保证离开代码的扫描不会被视为有效。一种简单的方法是在条形码上方和下方打印黑色,以便通过顶部或底部进入和/或退出的任何扫描都会将代码视为以特别粗的黑条开始和/或结束。在许多人看到“堆叠”条形码的地方,它们将被一个不保存信息的点图案分开,而是设计成确保从一行到另一行的扫描不能被视为有效。