我是java新手,但不是编程。我试图了解如何在java中使用串口。我正在尝试开发一个代码,该代码需要在运行时多次打开和关闭串行端口。
在我的测试代码中,我使用复选框,选中它将打开串口,如果未选中将关闭。不知何故,我第一次关闭端口 然后再次重新打开第二,第三等时间我得到豁免错误。
以下是控制台日志
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.
我也找到了这段代码,并在关闭之前添加到代码中,但我仍然无法在第二次尝试时打开端口...
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();
}
}
答案 0 :(得分:1)
请确保不要打开任何虚拟机。它通常发生在我身上:D