Java: исключение последовательного порта - порт занят - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть счетчик счетов, подключенный к ПК через ком-порт.Я пытаюсь отправить данные в средство проверки счетов и получить выходные данные (средство проверки счетов связывается по протоколу 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 голосов
/ 27 сентября 2018

В основном это происходит в 2 ситуациях: 1- Вы назначили неправильный порт, который может быть другим устройством, вы можете проверить его через менеджер устройств.2- Вы открыли его ранее с другим программным обеспечением или, возможно, ваш предыдущий прогон кода все еще использует его, и вы не прекратили его.Я вижу в вашем коде, что вы сначала перечислили все свои com-порты, но вы не получаете от этого пользы, это кажется излишним.Я рекомендую вам удалить все строки в вашей части try вашего кода и просто оставить строку openport и сделать это для других строк, чтобы увидеть, какая строка дает исключение.

...