2015-11-25 5 views
1

Я новичок в java, но не для программирования. Я пытаюсь понять, как использовать последовательный порт в java. Я пытаюсь разработать код, который потребует несколько раз открывать и закрывать последовательный порт во время выполнения.Windows10 jssc.SerialPortException: openPort(); Тип исключения - Порт занят

В моем тестовом коде я использую флажок, который, когда он установлен, откроет последовательный порт и закроется, если не установлен. Как-то после того, как я закрою порт в первый раз , а затем снова заново за второе, третье и т. Д., Я получаю ошибку исключения.

Вот логи консоли

Open Port 
Close Port 
Open Port 
jssc.SerialPortException: Port name - COM1; Method name - openPort(); Exception type - Port busy. 
Close Port 
Open Port 
jssc.SerialPortException: Port name - COM1; Method name - openPort(); Exception type - Port busy. 

Я также нашел этот код и добавлен в код предыдущего закрытия, но я до сих пор не может открыть порт на второй и succedding пытается ...


if (serialPort != null && serialPort.isOpened()) { 
    serialPort.purgePort (1); 
    serialPort.purgePort (2); 
    serialPort.closePort(); 
} 

Надеясь кто-то может мне точку в правильном направлении или исправить мой код. Спасибо вам и продвигайтесь. Кстати, я использую Windows 10 64bit.

Вот мой тестовый код ...

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.CheckBox; 
import javafx.scene.layout.StackPane; 
import javafx.stage.Stage; 
import jssc.SerialPort; 
import jssc.SerialPortException; 

public class Main extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 

     primaryStage.setTitle("Serial Test"); 

     // CONNECT CheckBox 
     CheckBox connectBox = new CheckBox("OPEN PORT"); 

     connectBox.setOnAction(e -> { 
      SerialPort serialPort = new SerialPort("COM1"); 
      if (connectBox.isSelected()) { 
       try { 
        System.out.println("Open Port"); 


        if (serialPort != null && serialPort.isOpened()) { 
          serialPort.purgePort (1); 
          serialPort.purgePort (2); 
          serialPort.closePort(); 
         } 
        if (serialPort.openPort()) serialPort.closePort(); 
        serialPort.openPort(); 
        serialPort.setParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); 
       } catch (SerialPortException ex) { 
        System.out.println(ex); 
       } 
      } else { 
       try { 
        System.out.println("Close Port"); 
        if (serialPort != null && serialPort.isOpened()) { 
          serialPort.purgePort (1); 
          serialPort.purgePort (2); 
          serialPort.closePort(); 
         } 
       } catch (SerialPortException ex) { 
        System.out.println(ex); 
       } 
      } 
     }); 
     StackPane root = new StackPane(); 
     root.getChildren().add(connectBox); 
     primaryStage.setScene(new Scene(root, 400, 200)); 
     primaryStage.show();  
    } 
} 

ответ

1

Пожалуйста, убедитесь, что не имеют каких-либо виртуальную машину открытой. Обычно это происходит со мной: D

 Смежные вопросы

  • Нет связанных вопросов^_^