【问题标题】:Barcode scanner | Read the first part of the barcode only条码扫描器 |仅读取条形码的第一部分
【发布时间】:2021-02-07 08:13:49
【问题描述】:

我目前正在开发一个 Web 应用程序,该应用程序需要能够读取包含多个值(全部由管道分隔)的数据矩阵代码。这段代码包含大约 70-80 个字符,我只需要前 10 个。

我正在使用一个简单的 javascript 正则表达式,它允许我检测输入这 10 个字符的时间,然后触发回发。

这就是它的工作原理: 当我扫描代码并看到我有我需要的部分时,我会触发一个回发,在后端做一些逻辑,然后将焦点放回用于扫描的输入上,以便用户再次扫描。

问题是: 当我将焦点设置回输入时,扫描仪继续输出之前的数据矩阵代码的其余部分! (扫描仪需要大约 1-1.2 秒来扫描完整的代码),所以如果我的后端逻辑比这更快,它不会完成,即使在我的回发之后。 )

我的问题是: 有什么我可以做的吗?

以下是我拥有但根本不理想的两个解决方案:

  • 使用某种 javascript 计时器,让我可以检测扫描仪何时完成(问题是,我不想在扫描新代码之前等待扫描仪完成)

  • 放置另一个仅包含此值的数据矩阵(这将是我的最后一个解决方案,因为它会影响很多事情)

【问题讨论】:

  • 在读取新代码之前,您需要刷新缓冲区。
  • @jdweng ,没想到这是可能的!你知道我怎么能做到这一点吗?
  • 扫描的长度是否始终相同?我会让文本框接收整个扫描 - 一旦字符开始流动,我会认为数据来得非常快。这样你就不必刷新缓冲区。另一种是使用 js 和 keydown - 你仍然会抓取所有字符 - 但在 10 点之后切,然后只有在收到/读取/抓取所有字符后才回发。换句话说,在收到整个文本块之前,我不敢进行回发。如果您回帖并且字符仍在传入,那么您将遇到大量问题。
  • @AlbertD.Kallal 我目前正在等待整个字符串然后参加我想要的部分。问题是扫描仪很慢(几秒钟),我不希望用户等待..
  • 比如你使用的扫描仪是硬件还是软件,如果你有能力丢弃你正在处理的数据,你就可以调用它。如果没有这样的功能,您将无法停止它,您必须等到所有数据都被读取。但是,如果您可以管理接收不必要数据的状态,您可能能够在此期间并行执行其他处理。

标签: c# asp.net vb.net barcode-scanner datamatrix


【解决方案1】:

虽然我很想找到一个代码内解决方案,但我找到了另一个解决方案。

我发现我可以使用配置页面更改扫描仪的速度。我把它设置为“快速”,现在我几乎一次收到了字符串。 (不是事件 0.2 秒)

我只是不知道为什么快速不是默认选项..

【讨论】:

  • 可能是因为最初开发扫描仪时,这是它的最大速度 - 随着时间的推移,使用该扫描仪的软件开始依赖于该速度 - 通过使其更快,他们破坏了该软件 - 所以他们必须默认以确保他们客户的旧软件继续工作!
猜你喜欢
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2018-11-03
相关资源
最近更新 更多