Java读卡器乱码

时间:2014-09-19 06:09:51

标签: java swing io keyboard credit-card

我有一个便宜的磁卡读卡器,就像键盘一样。我连接它并刷卡,它将所有卡数据输入计算机。但由于某种原因,它在Java中并不起作用。它确实适用于我尝试过的所有非Java。

卡上有什么(在SO编辑器中实际刷卡):

;00548757802?

使用Java时:

;0◘)P87┼7\02?
_005487578D♥
;005487G802?
_005*J657802{
♣00548I5♣802?
;≥T548757♠╢·?
≥T54875I↑:?

正如您所看到的,每次都有所不同。但是,读者会在数据之后发送换行符,Java似乎可以识别该数据。

我的阅读输入代码:

// Bound to a JTextField
public void keyTyped(KeyEvent e) {
    System.out.print(e.getKeyChar());
}

JTextField还显示文本乱码。

这里有什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:1)

您似乎已向KeyListener添加了JTextFieldKey Bindings使用了每个平台特有的BufferedReader。而是使用event dispatch thread来阅读System.in; readLine()方法应该能够检测到行结束。

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

为避免阻止SwingWorker,请在{{3}},publish()结果的后台进行I / O操作,并更新您的JTextField实施process()

答案 1 :(得分:0)

好吧,我明白了。我便宜的15美元读卡器设置为使用alt代码进行数据输入,而不是简单的击键。我能够使用我在网上找到的实用程序对其进行重新编程,以模拟普通键盘而不是为每个字符键入alt代码。