Java:串行端口异常-端口繁忙

时间:2018-09-27 16:03:10

标签: java tcomport

我有一个票据验证器通过com端口连接到PC。我尝试将数据发送到账单验证器并接收输出(账单验证器通过ccnet协议进行通信) 这是我的代码-

public static void main(String[] args) throws SerialPortException {

    String s[]=SerialPortList.getPortNames();
    for (String x :s){
       System.out.print(x);
       SerialPort serialPort=new SerialPort(x);
    }

    try {
        SerialPort serialPort=new SerialPort("COM4");
        serialPort.openPort();
        serialPort.setParams(9600, 8, 1, SerialPort.PARITY_NONE);
        serialPort.writeString("RESET");
        serialPort.setEventsMask(SerialPort.MASK_RXCHAR);
        serialPort.addEventListener(new list());

        System.out.println(serialPort.readBytes(5));
    } catch (SerialPortException sex){
    System.out.print(sex);
    }

串行端口事件侦听器:

private  static class list implements SerialPortEventListener{

    @Override
    public void serialEvent(SerialPortEvent spe) {
        if (spe.isRXCHAR()&&spe.getEventValue()>0){
        try {

            String data =s erialPort.readString(spe.getEventValue());
        } catch (SerialPortException ex) {
        Logger.getLogger(Terminal.class.getName()).log(Level.SEVERE, null, ex);
        }
        }       
}

所以我得到了串行端口异常端口繁忙,我该如何解决?

1 个答案:

答案 0 :(得分:0)

通常,这将在两种情况下发生: 1-您分配了错误的端口(可能是其他设备),可以通过设备管理器进行检查。 2-您之前已使用其他软件打开了它,或者您先前的代码运行仍在使用它,但尚未终止。 我在您的代码中看到您已经首先列出了所有com端口,但是您没有从中受益,这似乎是多余的。 我建议您删除代码的try部分中的所有行,而只保留openport行,然后对其他行执行此操作,以查看哪个行产生异常。