Search code examples
c#winformsbarcodeseparatordatamatrix

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


I use a barcode scanner to read medecine GS1 datamatrix codes. I need the entire data sequence, including Group Separators to parse the code in order to seek for Application identifiers (AI) and get the data accordingly. The target is a winforms C# application, it will call the NMVS services to check medecines status. Actually i put a TextBox as the target control but its content does not contain the GS anymore.

Thank you for your help

If I manually fill the textbox with 0x1D (ASCII 29) chars as separators, it works like a charm. The GS1 parser finds the AI and I can extract data. If I open Notepad++ with focus on it and scan a code, the special characters are present. I setup my scanner, NETUM C750 model, to map the function keys, so that the separators are included into the buffer.


Solution

  • As Barcode scanner is considered a keyboard, I found out to catch the keypress event, so that I fill a char list.

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

    After that, I parse the char list as the GS1 content, and I can call the NMVS service :

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

    then process response