Ответ 1
Я видел этот пост пока, и у меня была такая же проблема, закрывая 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);
}
}
}
И ya, он закрывает порт без проблем.
- Смотрите все примеры JSSC коды
- Пакет можно скачать здесь.
- Домашняя страница JSSC
Примечание.. Это открытый ответ, если у кого-то есть соответствующий опыт, пожалуйста, внесите свой вклад, отредактировав ответ. Я видел, как люди задавали этот вопрос в Интернете и имели почти такую же проблему с RXTX в целом и не нашли работоспособного решения для RXTX.
Я ответил другому парню с аналогичным ранее question в Stackoverflow.
Я хотел поделиться знаниями, которые у меня есть, это может быть полезно для тех, кто сталкивается с такой же проблемой. Это может сделать ваш день менее болезненным.