|
|
@@ -39,6 +39,11 @@ public class ModbusRtu {
|
|
|
if(serialPort ==null || !serialPort.isOpen()){
|
|
|
serialPort = reconnect(serialPort);
|
|
|
}
|
|
|
+ if(serialPort == null){
|
|
|
+ // 串口设备不存在(如COM2未接硬件),跳过操作,避免NPE刷屏
|
|
|
+ System.out.println("Modbus设备未连接,跳过openDevice");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
try {
|
|
|
String writeString = "010600000000"; // 关
|
|
|
@@ -73,6 +78,11 @@ public class ModbusRtu {
|
|
|
if(serialPort ==null || !serialPort.isOpen()){
|
|
|
serialPort = reconnect(serialPort);
|
|
|
}
|
|
|
+ if(serialPort == null){
|
|
|
+ // 串口设备不存在(如COM2未接硬件),跳过操作,避免NPE刷屏
|
|
|
+ System.out.println("Modbus设备未连接,跳过closeDevice");
|
|
|
+ return;
|
|
|
+ }
|
|
|
try {
|
|
|
String writeString = "010600000001"; // 开
|
|
|
String crc = getCRC16_Modbus_Str(writeString);
|
|
|
@@ -106,6 +116,11 @@ public class ModbusRtu {
|
|
|
if(serialPort ==null || !serialPort.isOpen()){
|
|
|
serialPort = reconnect(serialPort);
|
|
|
}
|
|
|
+ if(serialPort == null){
|
|
|
+ // 串口设备不存在(如COM2未接硬件),跳过操作,避免NPE刷屏
|
|
|
+ System.out.println("Modbus设备未连接,跳过readCoil");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
try {
|
|
|
String writeString = "010100000"+pos+"01"; // 线圈地址 0/1,目前只有2路
|
|
|
String crc = getCRC16_Modbus_Str(writeString);
|