質問

私の友人と私は、キーボード/マウスのないタッチスクリーン端子用に作られたGUIでJavaでプログラムを書きました。すべてがGUI内で発生し、入力のほとんどはボタンプレスです。磁気カードリーダー(キーボードモード)を添付し、カードから読み取り、データに基づいて処理を実行します。

コンソールで動作するクラスを書きましたが、GUIを実行すると、Alt+タブがIDE(Eclipse)コンソール内をクリックしてカードをスワイプするまでハングアップします。私が探しているのは、GUIを離れる必要がある場合にこの入力を取得する方法です。

MCRは、キーボードのカード情報を単に入力したように機能します。同じライン、TXTドキュメント、コンソールなどを入力できる場所にデータの両方のトラックを含む行を送信します。

関連するコードは次のとおりです。

import java.util.Scanner;

public class CardRead {
    public static void main() 
    {
    String raw_card_data = "";

    Scanner read = new Scanner( System.in );
    System.out.println("Scan card"); // changed to an outputArea.setText for GUI

    raw_card_data = read.nextLine(); // works in console, not within GUI

    /* insert processing here */
    }
}    

GUIでは、コードは単純です。

cardreadbtn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e)
        {
            CardRead.main();
        }
    }); 

Inputstreamが機能するかもしれないと思いましたが、私は彼らと一緒に仕事をしたことがありません。私はグーグルでこれを見つけましたスレッド :次のように、ioutilsに関する提案を統合してみました。

InputStream is = System.in;
StringWriter writer = new StringWriter();
IOUtils.copy(is, writer, null);
raw_card_data = writer.toString();
System.out.println(raw_card_data);
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(writer);

私がそれを正しくやっているかどうかはわかりませんが、コンソール(GUIで試したことはありません)で、「スキャンカード」と言って、raw_card_dataを印刷するか、他のことをしないように進行することはありません。 「近く」から得た ここ:

...しかし、繰り返しますが、私がそれを正しくやっているなら、私は知らない。 Apache ioutilsとも仕事をしたことはありません。

だから私は立ち往生しています、そして私はあなたたちを探しています。このカードデータをGUIを残すためにどうすれば取得できますか?

重要な注意:カードデータには、その中に変数のスペースがあります(保存する必要があります)。そのため、scanner.next()のようなものは機能しません。カードリーダーは、両方のトラックが区切り文字によって区切られ、その後キャリッジリターンを備えたラインを送信するように設定されているため、.nextline()が機能します。カードデータは、バイト/文字の変数#でもあります。

また:最初のコードブロックでは、system.out.printlnはdoの前にありますwhile loopはraw_card_data = read.nextline()が実際に存在します(私はそれが関連していないと感じたのでそれを除外しましたが、今は私は興味がありますこれをやっています)。 printlnがsettext()に変更されてGUIのjtextareaに表示されると、カードデータがコンソールで入力されるまで表示されず、whileの前に発生し、その前に実行する必要があります。わかりません、笑。

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top