123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- package com.ruoyi.sim.service.my;
- import org.slf4j.LoggerFactory;
- import org.slf4j.Logger;
- import org.springframework.stereotype.Service;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.Socket;
- import static com.ruoyi.sim.service.my.IotService.Const.*;
- /**
- * 硬件通信
- */
- @Service
- public class IotService {
- interface Const {
- String IP = "127.0.0.1";
- int PORT = 9000;
- /**
- * 报文长度
- */
- int MSG_LENGTH = 20;
- String PREFIX = "AA";
- String SUFFIX = "55";
- /**
- * orientation
- */
- String ORN_SEND = "01";
- /**
- * orientation
- */
- String ORN_RECEIVE = "02";
- String CMD_DATA_PLACE_HOLDER = "00000000";
- String CMD_READ = "03";
- String CMD_GET_SIM_TYPE = "B1";
- String CMD_SET_FAULT = "01";
- String CMD_READ_SIM_FAULT_STATE = "03";
- String CMD_CLEAR_SIM_FAULT = "02";
- }
- private static final Logger logger = LoggerFactory.getLogger(IotService.class);
- private Socket socket = null;
- /**
- * 检查所有模拟器状态
- */
- public void checkAllSim() {
- }
- /**
- * 设备类型读取
- *
- * @param simNum 设备编号
- */
- public void getSimType(final String simNum) {
- // todo:check
- //
- StringBuffer m = new StringBuffer();
- m.append(PREFIX);
- m.append(simNum);
- m.append(ORN_SEND);
- m.append(CMD_READ);
- m.append(CMD_GET_SIM_TYPE);
- m.append(CMD_DATA_PLACE_HOLDER);
- m.append(SUFFIX);
- final String sendMsg = m.toString();
- final String receiveMsg = send(sendMsg);
- }
- /**
- * 故障下发
- *
- * @param simNum 设备编号
- * @param faultType 故障类型
- */
- public void setFault(final String simNum, final String faultType) {
- // todo:check
- //
- StringBuffer m = new StringBuffer();
- m.append(PREFIX);
- m.append(simNum);
- m.append(ORN_SEND);
- m.append(CMD_SET_FAULT);
- m.append(faultType);
- m.append(CMD_DATA_PLACE_HOLDER);
- m.append(SUFFIX);
- //
- //
- final String receiveMsg = send(m.toString());
- //
- }
- /**
- * 状态读取
- *
- * @param simNum 设备编号
- * @param faultType 故障类型
- */
- public void getSimStatus(final String simNum, final String faultType) {
- // todo:check
- //
- StringBuffer m = new StringBuffer();
- m.append(PREFIX);
- m.append(simNum);
- m.append(ORN_SEND);
- m.append(CMD_READ_SIM_FAULT_STATE);
- m.append(faultType);
- m.append(CMD_DATA_PLACE_HOLDER);
- m.append(SUFFIX);
- //
- //
- final String receiveMsg = send(m.toString());
- //
- }
- /**
- * 故障清清除
- *
- * @param simNum 设备编号
- * @param faultType 故障类型
- */
- public void clearSimStatus(final String simNum, final String faultType) {
- // todo:check
- //
- StringBuffer m = new StringBuffer();
- m.append(PREFIX);
- m.append(simNum);
- m.append(ORN_SEND);
- m.append(CMD_CLEAR_SIM_FAULT);
- m.append(faultType);
- m.append(CMD_DATA_PLACE_HOLDER);
- m.append(SUFFIX);
- //
- //
- final String receiveMsg = send(m.toString());
- //
- }
- /**
- * send hex message
- *
- * @param sendMsg
- * @return
- */
- public String send(final String sendMsg) {
- logger.info("sendMsg");
- logger.info(sendMsg);
- String receiveMsg = null;
- try {
- if (socket == null) {
- socket = new Socket(IP, PORT);
- }
- InputStream is = socket.getInputStream();
- OutputStream os = socket.getOutputStream();
- os.write(hexStrToByteArrs(sendMsg));
- byte[] buffer = new byte[1024];
- int length = is.read(buffer);
- StringBuffer sbHex = new StringBuffer();
- for (int i = 0; i < length; i++) {
- sbHex.append(String.format("%02X", buffer[i]));
- }
- receiveMsg = sbHex.toString();
- } catch (IOException e) {
- e.printStackTrace();
- }
- logger.info("receiveMsg");
- logger.info(receiveMsg);
- return receiveMsg;
- }
- /**
- *
- */
- public void close() {
- try {
- if (socket != null) {
- socket.close();
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- } finally {
- socket = null;
- }
- }
- public byte[] hexStrToByteArrs(String hexString) {
- // if (StringUtils.isEmpty(hexString)) {
- // return null;
- // }
- hexString = hexString.replaceAll(" ", "");
- int len = hexString.length();
- int index = 0;
- byte[] bytes = new byte[len / 2];
- while (index < len) {
- String sub = hexString.substring(index, index + 2);
- bytes[index / 2] = (byte) Integer.parseInt(sub, 16);
- index += 2;
- }
- return bytes;
- }
- }
|