首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摩托罗拉EMDK -有可能有多组解码器参数的I2OF5?

摩托罗拉EMDK -有可能有多组解码器参数的I2OF5?
EN

Stack Overflow用户
提问于 2013-10-10 23:35:39
回答 1查看 827关注 0票数 1

我正在开发一个应用程序,需要能够扫描多种长度/类型的I2of5条形码。较长的条形码有14位数长,较短的条形码有4或10位长。

我设置了I2OF5解码器的参数以允许这样做:

代码语言:javascript
复制
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参数中启用美国海军校验位方案,它就解决了这个问题,因为部分扫描几乎永远不会有正确的校验位。但10位和4位条形码不使用校验位,因此它们不再扫描。

有没有一种方法可以拥有多组I2of5参数?然后我可以创建一个在USS打开的情况下最小和最大长度为14,另一个在USS关闭时最小和最大长度为10,第三个最小和最大长度为4,同样关闭USS。

我相信Intermec API允许这样做,它有多组活动参数,但在Motorola EMDK中找不到这样做的方法。我使用的是.Net EMDK2.7。

EN

回答 1

Stack Overflow用户

发布于 2013-10-11 04:14:00

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

这两个事件(Timer Tick和TextBox TextChanged)都有相同的签名,因此您甚至可以将这两个事件连接到同一个事件!

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19300223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档