[英]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.