Я новичок в 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();
}
}