【发布时间】: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