1

複数の長さ/タイプの I2of5 バーコードをスキャンできるようにする必要があるアプリケーションを開発しています。長いバーコードは 14 桁、短いバーコードは 4 桁または 10 桁です。

これを可能にするために、I2OF5 デコーダーのパラメーターを設定しました。

Barcode2 symbolBarcode2 = new Barcode2(Symbol.Barcode2.Devices.SupportedDevices[0]);
symbolBarcode2.Config.Decoders.I2OF5.MinLength = 4;
symbolBarcode2.Config.Decoders.I2OF5.MaxLength = 14;

長いバーコードの部分スキャンをデコードするスキャナに問題があります。最小値と最大値を 14 に設定すると、これは修正されますが、短いバーコードはスキャンできなくなります。

14 桁のバーコードは、USS チェック ディジットを使用します。I2of5 パラメータで USS チェック ディジット スキームを有効にすると、問題が解決します。これは、部分スキャンでは正しいチェック ディジットが得られることはほとんどないためです。ただし、10 桁と 4 桁のバーコードはチェック ディジットを使用しないため、スキャンされなくなります。

I2of5 パラメータのセットを複数持つ方法はありますか? 次に、USS をオンにして最小長と最大長を 14 に設定したものと、USS をオフにして最小長と最大長を 10 にした別のもの、同じく USS をオフにして最小長と最大長を 4 にしたものを作成できます。

私は、Intermec API がこれを可能にし、アクティブなパラメーターの複数のセットを持っていると信じていますが、Motorola EMDK でそれを行う方法を見つけることができませんでした。.Net EMDK 2.7 を使用しています。

4

1 に答える 1

0

TextBox コントロールをデバイスのフォームにドロップし、フォーカスがあることを確認してから、TextChanged イベントを処理するか、500 ミリ秒ごとに TextBox の Text プロパティを読み取るタイマーを追加する方が簡単です。

2 つのイベント (Timer Tick と TextBox TextChanged) は両方とも同じシグネチャを持っているため、両方を同じイベントに接続することもできます!

private const bool USETIMER = true;
private const int TIMER_MS = 500;
private System.Windows.Forms.Timer m_timer;
private TextBox txtBarcode;

public Form1() {
  InitializeComponent();
  if (USETIMER) {
    m_timer = new System.Windows.Forms.Timer();
    m_timer.Interval = TIMER_MS;
    m_timer.Tick += new EventHandler(Barcode_Check);
    m_timer.Enabled = true;
  } else {
    txtBarcode.TextChanged += new EventHandler(Barcode_Check);
  }
}

private void Barcode_Check(object sender, EventArgs e) {
  if (!String.IsNullOrEmpty(txtBarcode.Text)) {
    // Process your barcode
  }
}

SDK を使用する必要はまったくありません。

于 2013-10-10T20:14:00.107 に答える