2016-06-14 10 views
0

私は "Motorola EMDK for .net v。2.7"でGS1データマトリックスコードを読み込もうとしています。そのために私は記号(。V 2.5.0.3)とSymbol.Barcode(V 2.7.0.2)を使用してきたアセンブリおよびWindowsの次のサンプルコードを作成したアプリケーションフォーム:私はしましたMotorola EMDK with .Net用GS1 Datamatrixコード

private global::Symbol.Barcode.Reader _reader; 
    private global::Symbol.Barcode.ReaderData _readerData; 

    public Form1() 
    { 
     InitializeComponent(); 

     _readerData = new ReaderData(ReaderDataTypes.Text, ReaderDataLengths.DefaultText); 

     var device = Device.AvailableDevices.FirstOrDefault(d => d.DeviceName != Device.SIMULATE); 
     if (device == null) 
     { 
      throw new Exception("No Symbol scanner in the system."); //TODO //MSG 
     } 

     // Create the reader, based on selected device 
     _reader = new global::Symbol.Barcode.Reader(device); 

     _reader.Actions.Enable(); 

     _reader.Changes.Save(); 

     _reader.ReadNotify += new EventHandler(_reader_ReadNotify); 

     // Start a pending read. 
     try 
     { 
      _reader.Actions.Read(_readerData); 
     } 
     catch (global::Symbol.Exceptions.OperationFailureException) 
     { 
      //_logger.Error("Error, Reader is blocked", ex);, 
     } 
    } 

    private void _reader_ReadNotify(object sender, EventArgs e) 
    { 
     _readerData = _reader.GetNextReaderData(); 

     _reader.Actions.Read(_readerData); 
    } 

    private void Form1_Closing(object sender, CancelEventArgs e) 
    { 
     _reader.Dispose(); 
    } 

をReadNotifyイベントでブレークポイントを介して出力を分析しましたが、妥当な結果は得られません。そのコードは常に単なるコード文字列です。

gs1データ・マトリックス・コードであるか、またはより良い結果を得るために、シンボル・インデンシファイヤーを使用して表示する必要があります。

答えて

0

EMDKの例は、バーコードライブラリの使用方法を示しています。

switch (_readerData .Result) 
    { 
      case Symbol.Results.SUCCESS: 
       HandleData(_readerData) 
      break; 

    } 

_readerData.Textバーコードのテキストであり、あなたは、AIが _readerData.Type値を取得するためにGS1マトリックスコード内の関数のコードでテキストを分割する必要があり、バーコードの一種で、あなたは、マトリックスのバーコードを確認することができ

ReaderDataLengths.DefaultText (55)ReaderDataLengths.MaximumLabel

に変更する必要がある場合もあります。