.net GS1条形码解析-似乎没有分隔字符

twh00eeo  于 2022-11-26  发布在  .NET
关注(0)|答案(4)|浏览(463)

我有一个解析GS1条形码的程序(与斑马扫描仪),这工作得很好,至少我认为它是可以的...直到我遇到一个盒子与2 GS1条形码..一个"线性"和一个数据矩阵(UDI)。对于线性,它工作得很好,我成功地得到了GTIN和Serial。但是DataMatrix不同。由于某种原因,它的内容比线性代码长一点,它有一些生产日期和其他东西在结束。
这是线性代码:(01)00380652555852(17)260221(21)25146965079(30)1这是数据矩阵:(01)003 80652555852(17)260221(21)2514696507911210222240SA60AT225(21)(21)(21)(21)(22)(21)(22)(22)(21)(22)(22)(21)(21)(22)(22)(21)(22)(22)(22)(21)(22)(22)(22)(22)(22)(22)(22)(21)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(22)(
我在解析序列号-25146965079时遇到问题。GS1中的序列号长度为1 - 20个字符。此序列号有11个字符,但我如何使其在9个字符后停止?我如何知道序列号在此结束?我尝试将每个字符转换为UDI,但是看起来没有特别的分隔符什么的...所以我真的不知道该怎么做,有人知道吗?
这是密码如果有人想尝试
那些代码/产品是直接从制造商那里来的,所以代码不应该有什么问题,我想...

3gtaxfhh

3gtaxfhh1#

如果您使用designed to interpret a GS1结构的扫描仪验证条形码,您将看到生成的条形码实际上是不正确的。
您缺少GS after the serial number,如果不是最后一个,则这些代码必须以可变长度字段结尾。这在www.example.com的GS1 general specifications部分中指定7.8.5.2
如果没有这个分隔符,你就不可能知道序列号的结束位置,或者说,解释代码的机器也不可能知道。
告诉制造商他们需要研究GS1 specs
编辑:“正确的”版本应该是:

(01)00380652555852(17)260221(21)25146965079<GS>(11)210222(240)SA60AT225

括号和组分隔符<GS>不按字面意思包含在代码中。
因为你有两个可变长度的标识符(21)和(240),所以无论你做什么都需要一个GS。唯一的选择是为序列号填充一些内容,这样你就可以不用分隔符了。

laximzn5

laximzn52#

根据GS1 documentation(第156页及以后)
所有字段均正确
(01)00380652555852 --〉通用识别号
(17)260221 --〉有效期
(二十一)25146965079 --〉产品编号
(11)210222 --〉生产日期
(240)SA 60 AT 225--〉附加产品标识
我试着扫描图像,但结果和你的一样。
所以问题是分隔符不在那里。这对你来说是个问题,没有分隔符就没有办法知道序列号在哪里结束。

k3fezbri

k3fezbri3#

我很抱歉我的英语不好这个问题的原因是组分隔符是不可读的字符例如如果你把焦点放在文本框上并按下capslock按钮或shift按钮文本框中什么也没有出现同样的gs要解决这个问题Public l as integer并把下面的代码放在keyup事件中

If textbox1.textlenght = l then
My.combuter.keybord.sendkeys({enter})
L= textbox1.textlenght
End if

此代码将在每一个垃圾后给予空间(因为每一个垃圾与cabslock按钮相结合),并在groub空间中提供五个空间

jhdbpxl9

jhdbpxl94#

将原始输入存储在KeyPress事件中,然后读取字母或数字字符。

if (e.KeyChar != 13)
        {
            int asci = Convert.ToInt32(e.KeyChar);
            if (asci > 31 && asci < 128) // numeric and chars only
                rawbcode += Convert.ToChar((int)(e.KeyChar & 0xffff));             
            else
            {
                if (asci == 29)
                {
                    rawbcode += "<GS>"; // GS1 Seperator    
                }
            }
        }

相关问题