我使用条形码扫描仪读取药物 GS1 数据矩阵代码。我需要整个数据序列,包括组分隔符来解析代码,以便寻找应用程序标识符 (AI) 并相应地获取数据。 目标是一个winforms C#应用程序,它将调用NMVS服务来检查药物状态。 实际上我把一个 TextBox 作为目标控件,但它的内容不再包含 GS。
谢谢您的帮助
如果我用 0x1D (ASCII 29) 字符作为分隔符手动填充文本框,它就像一个魅力。 GS1 解析器找到 AI,我可以提取数据。 如果我打开 Notepad++ 并将焦点放在它上并扫描代码,则会出现特殊字符。我设置了我的扫描仪 NETUM C750 型号来映射功能键,以便分隔符包含在缓冲区中。
由于条形码扫描仪被视为键盘,我发现捕获按键事件,以便填充字符列表。
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);
然后处理响应