【问题标题】:Motorola EMDK - Possible to have multiple sets of decoder parameters for I2OF5?摩托罗拉 EMDK - 可以为 I2OF5 提供多组解码器参数吗?
【发布时间】:2013-10-10 15:35:39
【问题描述】:

我正在开发一个需要能够扫描多种长度/类型的 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;

扫描仪对较长条形码的部分扫描进行解码时遇到问题。将 Min 和 Max 设置为 14 可以解决此问题,但将不再允许扫描较短的条形码。

14 位条形码使用 USS 校验位。如果我在 I2of5 参数中打开 USS 校验位方案,它可以解决问题,因为部分扫描几乎永远不会有正确的校验位。但 10 位和 4 位条形码不使用校验位,因此不再扫描。

有没有办法拥有一组以上的 I2of5 参数?然后我可以创建一个最小和最大长度为 14 且 USS 开启,另一个最小和最大长度为 10 且 USS 关闭,第三个最小和最大长度为 4,USS 也关闭。

我相信 Intermec API 允许这样做,具有多组活动参数,但在摩托罗拉 EMDK 中找不到方法。我正在使用 .Net EMDK 2.7。

【问题讨论】:

  • 据我所知,EMDK .Net 无法做到这一点

标签: compact-framework barcode motorola-emdk


【解决方案1】:

将 TextBox 控件拖放到设备的 Form 上会更简单,确保它具有焦点,然后处理 TextChanged 事件或添加一个计时器以每 500 毫秒读取一次 TextBox 的 Text 属性。

这两个事件(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。

【讨论】:

  • 我在获取扫描的数据时没有任何问题。我假设您将使用带有代码的“Wedge”应用程序来实际从扫描仪获取数据。 Wedge 也会有同样的参数问题。它允许您像 SDK 一样编辑代码参数。但是 I2OF5 代码只能有一组参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
相关资源
最近更新 更多