В настоящее время я тестирую POS-систему Java / MySQL, которую я написал для небольшого бара, и у меня проблемы с получением наличных денег.
Денежный ящик имеет штекер RJ11, подключенный через USB-> последовательный блок, и запись любых данных на устройство приводит к открытию розыгрыша.
У меня проблемы с RXTX, и я не был уверен, был ли это мой код, библиотека или драйверы для устройства?
В идеале, я бы хотел, чтобы соединение создавалось, когда пользователь входит в систему, и закрывалось, когда они выходили из системы, но на данный момент код просто открывает соединение, записывает данные и закрывается при продаже звонит (между нажатием кнопки «Сохранить» и открытием выдвижного ящика задерживается 1-2 секунды.
Когда приложение запускается впервые, ящик работает нормально в течение нескольких продаж (не определили шаблон), но затем перестает работать. Он показывает диапазон возникающих исключений, смешивая либо NoSuchPort, PortInUse, либо просто простое сообщение AccessDenied. Как правило, перезапуск приложения и отключение / повторное подключение USB приводит к тому, что оно снова начинает работать для еще нескольких продаж.
Я могу подключиться к устройству с помощью HyperTerminal, и он работает последовательно, без каких-либо проблем.
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();
}
}
Я пробовал несколько разных настроек, пытаясь имитировать как можно ближе настройки, которые использует HyperTerminal (проверив PortMon), но все еще не работает.
Любые предложения будут с благодарностью!
Спасибо,
Райан.