首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条形码网站交互

条形码网站交互
EN

Stack Overflow用户
提问于 2010-10-20 03:01:53
回答 1查看 1.9K关注 0票数 1

我正在设计一个web应用程序,我正在考虑加入一些条形码读取,以方便数据输入。假设我有一个快递员需要做的任务清单。我想打印类似于以下页面的内容:

代码语言:javascript
复制
+----------------------------------------------------------------------+
| Task List                                   || || |||| || || ||| (a) |
|                                                                      |
| Task One                                    ||| || |||||| || ||| (b) |
| Task Two                                    ||| || || | | || ||| (c) |
| Task Three                                  | |||||| || ||| |||| (d) |
|                                                                      |
|                                             ||||| |||| || || ||| (e) |
+----------------------------------------------------------------------+

条形码由每行末尾的||||| | ||| || (x)表示。打印页面应该是直接使用条形码servlet作为烧烤。我想有一个一般的方式来拦截这些条形码并在jQuery中做一些事情。例如:

条形码(a)可以是goto:/tasklist/123:

  • barcodes (b),(c)和(d)可以是add:31222:add:31223add:31224:

  • barcode (e)可以是submit::

当扫描条形码(A)时,我会转到那个页面。当扫描条形码(b)、(c)、(d)时,我会在页面中填充文本输入。当扫描条形码(e)时,我会提交表格。我正在考虑有某种形式的jQuery侦听器,它可以在我可以根据条形码的第一个命令向其注册操作的每一个页面上使用。我知道我可以对条形码设备进行编程来结合一些逻辑,但我想避免它,这样任何条形码都可以,而且我不需要处理它们。

我甚至认为,每个条形码可能必须从一些神奇的令牌开始,以区分常规输入和条形码输入。也许有点像$**$:goto:/tasklist/123:。那么,问题是如何执行jQuery来拦截这组命令,以及为我创建的不同操作(例如:$**$:add:31222:)注册处理程序的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2010-11-27 12:27:47

我也做过类似的申请,所以这是我的两分钱。

USB扫描仪基本上像USB键盘一样工作。大多数用户将发送一个enter键作为终止字符,但这可以在大多数设备上进行配置。我依靠终止字符来驱动UI中的操作。(默认情况下,输入将提交当前选定的表单。)

另一个问题是,如果这是一个移动应用程序,您确实希望尽可能避免往返服务器。我解决了这个问题,在UI中有大量的应用程序逻辑,但是所有业务逻辑仍然在服务器上,因此要使操作生效,用户需要连接并能够将其发送到服务器。

所以,关键是你的问题。考虑一下这样的事情:

代码语言:javascript
复制
var state = 'WAITING'; # super simple state

function add(data) {
    # courier checks an item, 'data' contains the data from the scanner
}

function input_handler(input) {
    if (state == 'WAITING') {
        if (input == 'DONE' || input == 'EXIT') {
            state = 'DONE';
            # abort, whatnot
        } else {
            state = 'SCAN';
            input_handler(input); # recurse, with new state
        }
    } else {
        add(input);
    }
}

这基本上是一个状态机,手动编码。当信使检查‘我想开始扫描这个订单’-条形码,你进入一个模式,每个输入到您的扫描处理程序。当他扫描“I‘s done"-barcode时,您可以验证结果等等,这可以通过实际使用一个真正的状态机来改进。

你应该尽量简化条形码。像“扫描”、“退出”、“NOTHING_MORE_TO_SCAN”这样的命令是好的,因为它们是通用的,您的应用程序不需要解析条形码的含义。

保持简单的另一个原因是,你会遇到标签被损坏并且无法扫描的情况。然后,用户必须能够手动输入数据,而无需花费额外的时间查找特殊字符等。

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

https://stackoverflow.com/questions/3974446

复制
相关文章

相似问题

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