私は現在、小さなバー用に作成した Java/MySQL POS システムをテストしており、キャッシュ ドローに問題があります。
キャッシュ ドロワーには、USB->シリアル ボックス経由で接続された RJ11 プラグがあり、デバイスにデータを書き込むと、ドローが開きます。
RXTX に問題がありますが、それが私のコードなのか、デバイスのライブラリなのかドライバーなのかわかりませんでした。
理想的には、ユーザーがシステムにログインすると接続が作成され、ログアウトすると閉じられるようにしたいのですが、今のところ、コードは接続を開き、データを書き込み、販売が開始されると閉じるだけです(保存ボタンを押してから引き出しが開くまでに 1 ~ 2 秒の遅延があり、イライラします)。
アプリが最初に起動したとき、ドロワーはいくつかの売上 (パターンを特定していない) では正常に動作しますが、その後動作を停止します。NoSuchPort、PortInUse、または単純な AccessDenied メッセージのいずれかが混在して、さまざまな例外が発生していることを示しています。通常、アプリを再起動し、USB を切断/再接続すると、さらに数回販売できるようになります。
ハイパーターミナルを使用してデバイスに接続でき、問題なく一貫して動作します。
Java コード:
public static void openTill() {
try {
portId = (CommPortIdentifier) CommPortIdentifier.getPortIdentifier("COM3");
serialPort = (SerialPort) portId.open("DRAWER_PORT", 2000);
outputStream = serialPort.getOutputStream();
serialPort.setSerialPortParams(2400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
serialPort.setRTS(false);
serialPort.setInputBufferSize(8192);
serialPort.setOutputBufferSize(8192);
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_XONXOFF_IN | SerialPort.FLOWCONTROL_XONXOFF_OUT);
outputStream.write("k".getBytes());
outputStream.close();
outputStream = null;
serialPort.close();
serialPort = null;
} catch (Exception ex) {
ex.printStackTrace();
}
}
ハイパーターミナルが (PortMon をチェックして) 使用する設定にできる限り近づけようとして、いくつかの異なる設定を試しましたが、まだ機能しません。
どんな提案でも大歓迎です!
ありがとう、ライアン。