[英]Java card reader garbled
我有一台便宜的磁卡读卡器,它的作用就像键盘一样。 我将其连接并刷卡,然后它将所有卡数据输入计算机。 但是由于某种原因,它在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也显示乱码。
这有什么问题,我该如何解决?
看起来您已经向JTextField
添加了KeyListener
,它使用了特定于每个平台的键绑定 。 而是使用BufferedReader
读取System.in
; readLine()
方法应该能够检测到行尾。
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
为了避免阻塞事件调度线程 ,请在SwingWorker
的后台进行I / O,在可用时publish()
,并在process()
实现中更新JTextField
。
好吧,我知道了。 我便宜的15美元读卡器被设置为使用替代代码进行数据输入,而不是简单的按键操作。 我可以使用网上找到的实用程序对它进行重新编程,以模拟普通键盘,而不必为每个字符输入替代代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.