Я видел этот пост некоторое время, и у меня возникла та же проблема с закрытием serialport при использовании пакета gnu.io, который также называется RXTX.
Это не окончательный ответ, а предложение альтернативного решения, которое я нашел.
RXTX имеет две проблемы, на мой взгляд, если не больше:
- В зависимости от вашей среды IDE для Mac:
RXTXcomm.jar
и librxtxSerial.jnilib
и для ПК: RXTXcomm.jar
, rxtxSerial.dll
в корне проекта в вашей среде IDE или Java-коде, это зависит от среды IDE. в IDE. Документация здесь не описывает, как это сделать, и в различных IDE, таких как NetBeans, IntelliJ, даже если я заставил его работать как с Eclipse, так и с IntelliJ, но пока не с NetBeans. У него все еще есть другие болезненные проблемы.
- В зависимости от вашей ОС, даже если вы запустили этот пакет и запустили его, в Windows 8.1, например, возникла проблема с закрытием порта. И единственное решение - перезапустить вашу IDE / консоль и снова подключиться. Вы можете сойти с ума, перезапуская IDE каждый раз при разработке проекта.
Я потратил много часов на поиск решения, и нет решения для правильного закрытия порта, возможно, для Windows 8.1 и более поздних версий (не знаю о проблемах с закрытием порта в других средах), так как пакет старый и поддержка ограничено.
Поэтому я предлагаю перейти к пакету без головной боли, который называется JSSC.
Вот простое чтение данных из последовательного порта с использованием JSSC:
public class Main {
public static void main(String[] args) {
SerialPort serialPort = new SerialPort("COM1");
try {
serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
byte[] buffer = serialPort.readBytes(10);//Read 10 bytes from serial port
serialPort.closePort();//Close serial port
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
И да, порт закрывается без проблем.
Примечание: Это открытый ответ, если у кого-либо есть соответствующий опыт, пожалуйста, внесите свой вклад, отредактировав ответ.
Я видел людей, задающих этот вопрос в Интернете и имеющих почти одинаковую проблему с RXTX в целом, и не нашел работоспособного решения для RXTX.
Я ответил другому парню с похожим ранее вопросом в Stackoverflow.
Я хотел бы поделиться своими знаниями, это может быть полезно для тех, кто сталкивается с той же проблемой. Это может сделать ваш день менее болезненным.