告警硬接点装置增加停顿五秒

main
liuguijing 6 months ago
parent 8faee9e669
commit fc720c9389

@ -33,7 +33,7 @@ public class StaticVariable {
public static List<Zsb> zsb_Cache = null; public static List<Zsb> zsb_Cache = null;
public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>(); public static ConcurrentHashMap<Integer, WarnRule> rule_Cache = new ConcurrentHashMap<>();
public static List<SerialPort> serialPorts = new ArrayList<>(); public static SerialPort currentPort;
public static void wait(int seconds) throws InterruptedException { public static void wait(int seconds) throws InterruptedException {
for (int i = 0; i < seconds; i++) { for (int i = 0; i < seconds; i++) {

@ -6,11 +6,11 @@ import java.io.IOException;
import java.util.List; import java.util.List;
public interface SerialPortService { public interface SerialPortService {
List<SerialPort> discoverSerialPort(); Boolean discoverSerialPort();
boolean closeSerialPort(SerialPort port, String portname); void closeSerialPort();
Boolean openSerialPort(SerialPort port); Boolean openSerialPort();
void sendData(SerialPort port, boolean data) throws IOException; void sendData(boolean data) throws IOException;
} }

@ -1,63 +1,95 @@
package com.xydl.cac.service.impl; package com.xydl.cac.service.impl;
import com.fazecast.jSerialComm.SerialPort; import com.fazecast.jSerialComm.SerialPort;
import com.xydl.cac.model.StaticVariable;
import com.xydl.cac.service.SerialPortService; import com.xydl.cac.service.SerialPortService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@Service @Service
@Slf4j
public class SerialPortServiceImpl implements SerialPortService { public class SerialPortServiceImpl implements SerialPortService {
@Value("${cac.warnport.name}") @Value("${cac.warnport.name}")
public boolean warnportname; public String warnportname;
public List<SerialPort> serialPortList;
@Override @Override
public List<SerialPort> discoverSerialPort() { public Boolean discoverSerialPort() {
serialPortList = Arrays.asList(SerialPort.getCommPorts()); List<SerialPort> serialPortList = new ArrayList<>();
// 遍历串口列表并打印每个串口的名称 SerialPort[] commPorts = SerialPort.getCommPorts();
if (commPorts != null && commPorts.length > 0) {
serialPortList = Arrays.asList(commPorts);
for (SerialPort port : serialPortList) { for (SerialPort port : serialPortList) {
System.out.println("获取串口: " + port.getSystemPortName()); log.info("获取串口: " + port.getSystemPortName());
if (port.getSystemPortName().equals(warnportname)) {
StaticVariable.currentPort = port;
log.info("获取到硬接点告警串口: " + port.getSystemPortName());
return true;
} }
return serialPortList;
} }
return false;
//关闭串口 } else {
@Override log.error("未获取到硬接点告警串口!");
public boolean closeSerialPort(SerialPort port, String portname) { return false;
for (SerialPort portItem : serialPortList) {
if (portItem.getSystemPortName().equals(portname)) {
if (portItem != null) {
System.out.println("断开端口" + portItem.getSystemPortName() + "连接");
return portItem.closePort();
} }
} }
@Override
public void closeSerialPort() {
if (StaticVariable.currentPort != null) {
SerialPort port = StaticVariable.currentPort;
port.closePort();
} else {
log.error("断开串口失败,没有对应的硬接点告警串口!");
} }
return false;
} }
//发送数据到串口 //发送数据到串口
@Override @Override
public void sendData(SerialPort port, boolean data) throws IOException { @Async
byte[] buffer2; public void sendData(boolean data) {
if (openSerialPort()) {
byte[] openbuffer = new byte[]{00, (byte) 0xf1, (byte) 0xff};
byte[] stopbuffer = new byte[]{00, (byte) 0x01, (byte) 0xff};
SerialPort port = StaticVariable.currentPort;
if (port != null) {
if (data) { if (data) {
buffer2 = new byte[]{00, (byte) 0xf1, (byte) 0xff}; port.writeBytes(openbuffer, openbuffer.length);
} else { } else {
buffer2 = new byte[]{00, (byte) 0x01, (byte) 0xff}; port.writeBytes(stopbuffer, stopbuffer.length);
}
try {
Thread.sleep(5000);
port.writeBytes(stopbuffer, stopbuffer.length);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} }
port.writeBytes(buffer2, buffer2.length);
} }
@Override @Override
public Boolean openSerialPort(SerialPort port) { public Boolean openSerialPort() {
if (port.getSystemPortName().equals(warnportname)) { Boolean discover = false;
if (StaticVariable.currentPort == null) {
discover = discoverSerialPort();
} else {
discover = true;
}
if (discover) {
SerialPort port = StaticVariable.currentPort;
if (port.isOpen()) {
log.info("硬接点告警串口已经打开!");
return true;
} else {
int baudRate = 9600; // 波特率 int baudRate = 9600; // 波特率
int parity = SerialPort.EVEN_PARITY; // 校验位 int parity = SerialPort.EVEN_PARITY; // 校验位
int dataBits = 8; // 数据位 int dataBits = 8; // 数据位
@ -70,18 +102,22 @@ public class SerialPortServiceImpl implements SerialPortService {
} }
boolean b = port.openPort(); boolean b = port.openPort();
if (b) { if (b) {
log.info("打开硬接点告警串口成功!");
return true; return true;
} else { } else {
log.error("打开串口失败!");
return false; return false;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
// return ResponseResult.getErrorResult("Failed to open port " + port.getSystemPortName() + e.getMessage().toString()); log.error("打开串口失败" + e.getMessage());
return false; return false;
} }
// return ResponseResult.getSuccessResult("COM10 Serial port open");
} }
// return ResponseResult.getErrorResult("Failed to find port " + port.getSystemPortName()); } else {
log.error("打开串口失败,找不到硬接点串口!");
return false; return false;
} }
}
} }

@ -49,3 +49,5 @@ cac:
token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328 token: e65e730cba22e320e16926fd4ff19ce787fa2162d065792bb6562c6d4a4cf328
secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124 secret: SEC72e5fb1b4ce7f9fed55386040d599035c50f8d2a181ad66bd1277549f0716124
rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y= rsakey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=
warnport:
name: ttyCH341USB0
Loading…
Cancel
Save