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

How can I get a GS1 datamatrix code (with separators) to a C# winforms application

提问人:Jean-marc Blanchet 提问时间:10/19/2023 最后编辑:Jean-marc Blanchet 更新时间:10/30/2023 访问量:72

问:

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

谢谢你的帮助

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

C# WinForms 条形码 分隔符 DataMatrix

评论

0赞 Community 10/19/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 MyICQ 10/19/2023
很多时候,扫描仪会选择如何呈现 GS1 (FNC1) 结构化代码中的数据。它可能是扫描仪中的一个选项。您应该发布条形码样本,也许还有您使用的确切扫描仪类型(品牌和型号 ID)。这将使帮助您变得更加简单。
0赞 Jean-marc Blanchet 10/19/2023
我尝试使用在互联网上找到的随机代码,只需输入“gs1 datamatrix”作为标准。扫描仪是USB扫描仪,无需驱动程序。

答:

0赞 Jean-marc Blanchet 10/30/2023 #1

由于条码扫描器被认为是键盘,我发现可以捕获按键事件,因此我填写了一个字符列表。

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>(); 

之后,我将 char 列表解析为 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);

然后处理响应