我目前正在测试我为一个小酒吧编写的 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),但仍然无法正常工作。
任何建议将不胜感激!
谢谢,瑞恩。