手机端
当前位置:主页 > 英语 >

windows – 在不知道VID和PID的情景下读取USB HID条形

  此雕刻不能回恢复你的详细效实,但无论何以……

  壹年多先前,我在更恶行劣的环境下实施了条形码阅读器顶持.此雕刻是壹个报告运用以次,与纯Java(跨平台富客户端,首要是Windows)中的逻辑数据相相干.

  我发皓你对键盘驱触动以次的观点是壹样的,此雕刻却以备止在用户花样下区别还愿的USB设备,到微少乍壹看.拥有更昂贵的设备具拥有己己己的驱触动以次和初级干用,此雕刻将容许某种区佩.

  我在该环境中遇到的所拥有条形码阅读器邑露示为键盘,用于骈杂堵写SAP表单字段并点击回车键,此雕刻是壹种微少见情景.却以运用“幻术条形码”或其他创造商特定方法到来配备终止.

  故此,该决议针对任何基于JNI的平台特定实施.

  相反,我经度过运用以下规范评价某些Swing / AWT表单中的畅通用keyoard输入,完成了相像阻挡的方法(你的扩展版本):

  >前两个字符决定的击键频比值(最末/超时后)

  >颤抖(频比值/快比值变募化)

  >壹组拥有效的字符

  >终止换行符.

  输入被缓冲区消费,直到不称心趾机具生成的输入的环境,容许曾经经度过验证,就中将畅通牒条形码监收听器.在任何壹种情景下,邑却以转发输入,就像没拥有拥有其他事情壹样.

  此雕刻被证皓是什分正确的,鉴于关于人到来说,信直不能以条形码阅读器的快比值输入拥有效前言列(信直)洞颤抖.

  编纂:

  方剜出产Java源代码;我却认为您供上述实施的初期修订代码示例(无保修,也考虑实施CR):

  import java.awt.event.KeyEvent;

  import java.awt.event.KeyListener;

  import java.util.regex.Matcher;

  import java.util.regex.Pattern;

  public abstract class AbstractBarcodeInputListener implements KeyListener {

  public static final int DEFAULT_MIN_PAUSE=300;// [ms]

  public static final int DEFAULT_MAX_TIME_DELTA=200;// [ms]

  public static final int DEFAULT_MAX_TIME_JITTER=50;// [ms]

  public static Integer parseInt(Pattern pattern,int group,String line) {

  final Matcher matcher=pattern.matcher(line);

  if (matcher.matches())

  return Integer.parseInt(matcher.group(group));

  return null;

  }

  private String input;

  private final long minPause;

  private long maxTimeDelta;

  private final long maxTimeJitter;

  private long firstTime;

  private long firstTimeDelta;

  private long lastTimeDelta;

  private long lastTime;

  public AbstractBarcodeInputListener(long maxTimeDelta,long maxTimeJitter) {

分享至:

相关阅读