0

「Motorola EMDK for .net v. 2.7」でGS1データマトリックスコードを読み取ろうとしました。そのために、Symbol(v. 2.5.0.3) および Symbol.Barcode(v. 2.7.0.2) アセンブリを使用し、Windows フォーム アプリケーションで次のサンプル コードを作成しました。

    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データマトリックスコードであるか、有用な形式の結果であるという何らかの表示が必要です(たとえば、シンボル識別子を介して)。

4

1 に答える 1

0

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

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

     }

_readerData.Textはバーコードのテキストで、AI 値を取得するには GS1 マトリックス コードの機能コードでテキストを分割する必要があります。 は _readerData.Typeバーコードのタイプで、マトリックス バーコードを確認できます。

ReaderDataLengths.DefaultText (55)に変更する必要がある場合もありますReaderDataLengths.MaximumLabel

于 2016-06-28T13:47:56.280 に答える