Java: исключение последовательного порта - порт занят
У меня есть счетчик счетов, подключенный к ПК через ком-порт. Я пытаюсь отправить данные в средство проверки счетов и получить выходные данные (средство проверки счетов связывается по протоколу 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 ответ
В основном это происходит в 2 ситуациях: 1- Вы назначили неправильный порт, который может быть другим устройством, вы можете проверить его через менеджер устройств. 2- Вы открыли его ранее с другим программным обеспечением или, возможно, ваш предыдущий прогон кода все еще использует его, и вы не прекратили его. Я вижу в вашем коде, что вы сначала перечислили все свои com-порты, но вы не получаете от этого пользы, это кажется излишним. Я рекомендую вам удалить все строки в своей части try своего кода и просто оставить строку openport и сделать это для других строк, чтобы увидеть, какая строка дает исключение.