76 lines
2.5 KiB
Java
76 lines
2.5 KiB
Java
|
|
package com.ruoyi.tts.task;
|
|||
|
|
|
|||
|
|
import com.ruoyi.tts.exception.*;
|
|||
|
|
import com.ruoyi.tts.jacob.VoicePlayback;
|
|||
|
|
import com.ruoyi.tts.serial.SerialTool;
|
|||
|
|
import com.ruoyi.tts.utils.ByteUtils;
|
|||
|
|
import gnu.io.NoSuchPortException;
|
|||
|
|
import gnu.io.PortInUseException;
|
|||
|
|
import gnu.io.SerialPort;
|
|||
|
|
import lombok.extern.slf4j.Slf4j;
|
|||
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
|
import org.springframework.context.annotation.Configuration;
|
|||
|
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
|||
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|||
|
|
import org.springframework.stereotype.Component;
|
|||
|
|
import org.springframework.web.client.HttpClientErrorException;
|
|||
|
|
import org.springframework.web.client.RestTemplate;
|
|||
|
|
|
|||
|
|
import java.util.HashMap;
|
|||
|
|
import java.util.Map;
|
|||
|
|
import java.util.TooManyListenersException;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @author GideonYeung
|
|||
|
|
* @date 2020/6/24 11:42
|
|||
|
|
*/
|
|||
|
|
@Slf4j
|
|||
|
|
@Component
|
|||
|
|
@Configuration
|
|||
|
|
@EnableScheduling
|
|||
|
|
public class VoicePlaybackTask {
|
|||
|
|
|
|||
|
|
@Autowired
|
|||
|
|
private RestTemplate restTemplate;
|
|||
|
|
|
|||
|
|
// 串口对象
|
|||
|
|
private SerialPort mSerialport;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 2秒播放一次语音
|
|||
|
|
*/
|
|||
|
|
@Scheduled(fixedDelay = 3000)
|
|||
|
|
private void configureTasks() throws SerialPortParameterFailureException, SerialPortOutputStreamCloseFailureException, NotSerialPortException, PortInUseException, NoSuchPortException, TooManyListenersException {
|
|||
|
|
Map<String, Boolean> nodeValueMap = new HashMap<>();
|
|||
|
|
try {
|
|||
|
|
nodeValueMap = restTemplate.getForObject("http://127.0.0.1/icloud/nodeValue/getWmKey", Map.class);
|
|||
|
|
} catch (HttpClientErrorException e) {
|
|||
|
|
log.error("icloud暂无开启,无法获取数据。");
|
|||
|
|
}
|
|||
|
|
boolean contains = nodeValueMap.values().contains(true);
|
|||
|
|
byte[] bs;
|
|||
|
|
SerialPort port = null;
|
|||
|
|
if (contains) {
|
|||
|
|
port = SerialTool.openPort("COM1", 9600);
|
|||
|
|
//设定发送字符串
|
|||
|
|
bs = ByteUtils.hex2Bytes("5501110000000168");
|
|||
|
|
//打开串口
|
|||
|
|
SerialTool.sendToPort(port, bs);
|
|||
|
|
}
|
|||
|
|
nodeValueMap.forEach((key, value) -> {
|
|||
|
|
if (value) {
|
|||
|
|
String message = key + "号机按下广播通知,请及时处理。";
|
|||
|
|
log.info(message);
|
|||
|
|
VoicePlayback.textToSpeech(message);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if (contains) {
|
|||
|
|
//设定发送字符串
|
|||
|
|
bs = ByteUtils.hex2Bytes("5501120000000169");
|
|||
|
|
//关闭串口
|
|||
|
|
SerialTool.sendToPort(port, bs);
|
|||
|
|
SerialTool.closePort(port);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|