繁体   English   中英

从Swing中的条形码扫描仪读取

[英]Reading from a Barcode Scanner in Swing

我已经安装了Datalogic的条形码扫描仪,目的是将条形码读取到Java文本字段中。 但是,当我在Swing中扫描条形码时,结果文本是垃圾。 我不能用这个。 在独立的java.awt.TextField上可以正常工作,但是当我将其集成到代码中时,它也会产生垃圾不可映射的字符。

不知道我是否需要特定的JAVA驱动程序,我尝试将字符串从UTF-8转换为ISO-88 ...无济于事。

自从两天以来一直在寻找这个。

任何帮助将不胜感激。

谢谢

-无辜

尝试重置扫描仪,以删除可能已设置的所有spurios字符/代码; 即,根据参考指南,扫描仪默认情况下将发送gs1-128码的条形码ID作为转义序列,这可能会给摆动带来麻烦

http://www.datalogic.com/eng/quickscan-i-lite-qw2100-pd-163.html下载产品参考指南

扫描条形码进入编程模式

转到相关部分并扫描代码以删除所有序言并删除所有代码的目标标签

您还可以尝试使用不同类型的键盘仿真和代码页。

来自ALT + NumPad方法的条形码扫描仪发出的KeyEvents存在问题。 当按下ALT键时,Java会生成带有随机输出的KeyTyped事件。 当前版本的Java 7和Java 8 JRE中存在问题(我已经在Windows 8,Windows 7和Ubuntu 14上使用JRE 7u67和JRE 8u20对其进行了测试)。

我的解决方案是注册一个ALT方法处于活动状态时会阻止KeyEvent的KeyEventDispatcher:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
    new AltBugFixKeyEventDispatcher());

public class AltBugFixKeyEventDispatcher implements KeyEventDispatcher {

    private int i = -1;

    @Override
    public boolean dispatchKeyEvent(KeyEvent ke) {
        if (ke.isAltDown()) {
            switch (ke.getID()) {
                case KeyEvent.KEY_PRESSED:
                    if(ke.getKeyCode() == KeyEvent.VK_ALT){
                        i = 0;
                    }else if(Character.isDigit(ke.getKeyChar())){
                        i++;
                    }else{
                        i = -1;
                    }
                    break;
                case KeyEvent.KEY_RELEASED:
                    break;
                case KeyEvent.KEY_TYPED:
                    break;
            }
            if(i != -1){
                return true;
            }
        }
        return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM