如何将 GS1 数据矩阵代码(带分隔符)发送到 C# winforms 应用程序

问题描述 投票:0回答:2

我使用条形码扫描仪读取药物 GS1 数据矩阵代码。我需要整个数据序列,包括组分隔符来解析代码,以便寻找应用程序标识符 (AI) 并相应地获取数据。 目标是一个winforms C#应用程序,它将调用NMVS服务来检查药物状态。 实际上我把一个 TextBox 作为目标控件,但它的内容不再包含 GS。

谢谢您的帮助

如果我用 0x1D (ASCII 29) 字符作为分隔符手动填充文本框,它就像一个魅力。 GS1 解析器找到 AI,我可以提取数据。 如果我打开 Notepad++ 并将焦点放在它上并扫描代码,则会出现特殊字符。我设置了我的扫描仪 NETUM C750 型号来映射功能键,以便分隔符包含在缓冲区中。

c# winforms barcode separator datamatrix
2个回答
0
投票

由于条形码扫描仪被视为键盘,我发现捕获按键事件,以便填充字符列表。

List<char> charList = new List<char>();

private void textEditCode_KeyPress(object sender, KeyPressEventArgs e)
{
  charList.Add(e.KeyChar);
}
string datamatrix = new string(charList.ToArray()); //charList is filled      by pressing the keys, or when receiving data from the scanner
Aii = gS1.Parse(datamatrix); // Aii = new Dictionary<string, string>(); 

之后,我将字符列表解析为 GS1 内容,然后就可以调用 NMVS 服务了:

string Batch = gS1.GetValue(EGS1AI.Batch);
string ProductCode = gS1.GetValue(EGS1AI.GTIN);
System.DateTime ExpDate = gS1.GetValue(EGS1AI.ExpirationDate);
string SerialNumber = gS1.GetValue(EGS1AI.SerialNumber);
string dat = ExpDate.ToString("yyMMdd");

Log log = new Log(App.LogFolder(), App.AppName);

G110Response response = G110.G110Verify(ProductCode, Batch, dat, 
SerialNumber, log);

然后处理响应


0
投票

我使用条形码扫描仪读取传入组件的 GS1 数据。讽刺的是,我的更好的扫描仪 (Netum NT-2128BL) 会丢弃字段分隔符,而我的较差的扫描仪 (Teradata 8100) 则会通过它们。您可以尝试使用其他扫描仪。我的分隔符是 Unicode 字符“左右箭头”(U+2194)。 GS1_datamatrix_sample

© www.soinside.com 2019 - 2024. All rights reserved.