键盘条形码扫描仪

时间:2011-10-19 08:27:30

标签: c# barcode barcode-scanner

我们在应用程序中使用条形码扫描仪来扫描条形码。通常,当扫描ISBN条形码时,它会在扫描ISBN时返回以下一串键:97887021006268

  • LeftCtrl
  • LeftShift
  • 中号
  • D9
  • D7
  • D8
  • D8
  • D7
  • D0
  • D2
  • D1
  • D0
  • D6
  • D2
  • D6
  • D8
  • LeftCtrl
  • C

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

现在,我们的客户端都是新的条形码扫描仪,它们是键盘扫描仪。扫描相同的ISBN后,我们可以看到它不包含,前同步码和后同步码,与返回条码类型的代码一样好。相反,我们最后只得到了数字和返回键:

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

在这种情况下,我无法自动识别条形码的类型,甚至无法识别条形码是否被扫描 - 例如我无法自动搜索解决问题我正在考虑用户控制用户所在的位置:< / p>

  • 将识别扫描号码的TextBox
  • 带选项的RadioButton(ISBN,Code39,I2Of5)
  • 按钮,负责根据所选的RadioButton选项进一步处理TextBox和
  • 中的值

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您应该能够从两个非常大的按钮“扫描书”和“扫描顺序”中获取您缺少的信息,以便用户点击其中一个非常大的按钮,您就知道要查找的内容。

它是这样的:

  1. 用户抓取他们想要扫描的内容
  2. 用户点击一个非常大的按钮“扫描簿”或“扫描订单”(这里你得到的是你不再拥有的代码类型)
  3. 用户执行扫描
  4. 您执行扫描号码所需的操作