【问题标题】:Keyboard bar code scanner键盘条码扫描器
【发布时间】:2011-10-19 08:27:29
【问题描述】:

我们在应用程序中使用条形码扫描仪来扫描条形码。一般扫描ISBN条码时,扫描ISBN时返回如下一串key:97887021006268

  • 左Ctrl
  • B
  • 左移
  • M
  • D9
  • D7
  • D8
  • D8
  • D7
  • D0
  • D2
  • D1
  • D0
  • D6
  • D2
  • D6
  • D8
  • 左Ctrl
  • C

LeftCtrl+B 组合是序言,告诉我们开始读取识别号。 LeftCtrl+C 组合是后置码,告诉我们正在读完识别号。 LeftShift+M 组合告诉我们读取的是条形码类型。 根据该信息,扫描条形码后,我可以自动搜索具有相关 ISBN 的书籍。我们正在使用我们自己的条形码阅读器库,我们可以在其中识别 ISBN、Code39 和 I2Of5。

现在,我们的客户有两个新的条形码扫描仪,即键盘扫描仪。扫描同一个ISBN后,我们可以看到它没有包含前导码和后置码,与返回条形码类型的代码一样好。相反,我们最后只得到了数字和 Return 键:

  • D9
  • D7
  • D8
  • D8
  • D7
  • D0
  • D2
  • D1
  • D0
  • D6
  • D2
  • D6
  • D8
  • 返回

在这种情况下,我无法自动识别条形码的类型,甚至无法识别是否已扫描条形码 - 例如,我无法自动搜索要解决的问题,我正在考虑使用以下用户控制的用户:

  • 识别号码将被扫描到的文本框
  • 带有选项(ISBN、Code39、I2Of5)的单选按钮
  • 按钮负责根据选定的 RadioButton 选项进一步处理 TextBox 中的值和

我想问一下是否有其他(更好的)解决方案。

【问题讨论】:

  • 我不明白为什么你应该关心条形码类型。当然,价值才是最重要的,因为这将在您的数据库中提供查找。您是说您的条目具有相同的条码值但由于条码类型而不同?这对我来说听起来很糟糕
  • 目前我可以扫描 ISBN、Code39 或 I2OF5。当我扫描 ISBN 时,应用程序应该搜索书籍,当我扫描 Code39 或 I2OF5 应用程序时,应用程序应该搜索订单(订单也有条形码)。所以根据条码的种类有不同的场景承担
  • 那么唯一的办法就是从用户那里获得更多的输入。我建议使用一组单选按钮,以便轻松选择他们正在寻找的对象类型。所以“书籍”或“订单”的选项可能是最好的。然后搜索正确的数据库。本质上,正如您所指出的,新的条码数据没有足够的信息,如果客户不更换设备,您就无法更改。
  • 是的,很遗憾用户不能更换设备

标签: c# barcode barcode-scanner


【解决方案1】:

您可以编写几个提示。如果您正在扫描一本真正的书籍,您将获得一个 EAN13+5 Bookland EAN 代码。如果您使用不同的代码类型(如您的示例),您将只获得 13 位数字。检查长度 == 13 或长度 == 18。
ISBN 以 978(或最终为 979)开头,以 MOD 10 校验和结尾。所以你可以检查扫描值

/^(97[8|9]\d{10})5(\d{4})$/

适用于美国定价的书籍。价格前的最后一位数字是校验和。这应该可以很好地表明您正在使用 ISBN。
我发现最好将其编码到服务器中,然后依靠用户进行正确输入。

【讨论】:

    【解决方案2】:

    您应该能够从两个非常大的按钮“扫描书”和“扫描订单”中获取您缺少的信息,因此用户单击其中一个非常大的按钮并且您知道要查找的内容。

    它是这样的:

    1. 用户抓取他们想要扫描的任何内容
    2. 用户点击一个非常大的按钮“扫描书”或“扫描订单”(在这里你会得到你不再拥有的代码类型)
    3. 用户执行扫描
    4. 您可以使用扫描的号码做您需要做的事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2019-01-08
      • 2016-08-16
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多