package com.ruoyi.device.utils; import cn.hutool.core.bean.BeanUtil; import com.ruoyi.device.pojo.NA7672LRequestBean; import com.ruoyi.device.pojo.NA7672LValueVO; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class NA7672LTCPClientUtils { private Socket socket = null; private String serverIP = null; private int serverPort; public NA7672LTCPClientUtils(String serverIP, int serverPort) { this.serverIP = serverIP; this.serverPort = serverPort; } public void initTCP() throws IOException { this.socket = new Socket(this.serverIP, this.serverPort); this.socket.setSoTimeout(5000); } public void closeTcp() throws IOException { this.socket.close(); this.socket = null; } //设置全部通道(界面save/recall-调式2,需要本地有state02文件) public void initMemory(String filePath) throws IOException { try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); String requestString = ":MMEM:LOAD " + filePath; printWriter.println(requestString); printWriter.flush(); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } } //获取01配置里的所有值 public List getState01AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1_t1 = this.getListValue(1, 1, 3, "swr", 1); //写入 rs.addAll(c1_t1); return rs; } //获取02配置里的所有值 public List getState02AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } List c1_t1 = this.getListValue(1, 1, 1, "decay", 16); if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t1) { /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃)测试值÷长度÷温度系数×100*/ double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } List c3_t1 = this.getListValue(3, 1, 3, "swr", 1); List c3_t2 = this.getListValue(3, 2, 3, "swr", 1); List c4_t1 = this.getListValue(4, 1, 3, "swr", 1); List c4_t2 = this.getListValue(4, 2, 3, "swr", 1); List c5_t1 = this.getListValue(5, 1, 3, "swr", 1); List c5_t2 = this.getListValue(5, 2, 3, "swr", 1); List c6_t1 = this.getListValue(6, 1, 3, "swr", 1); List c6_t2 = this.getListValue(6, 2, 3, "swr", 1); List c8_t1 = this.getListValue(8, 1, 3, "swr", 1); List c8_t2 = this.getListValue(8, 2, 3, "swr", 1); rs.addAll(c1_t1); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); rs.addAll(c8_t1); rs.addAll(c8_t2); /*判断是否需要计算相位差和平均特性阻抗*/ int ifNeedPHA = 0; if (requestBean.getCycle() != null) { ifNeedPHA = 1; } else { ifNeedPHA = 0; } if (ifNeedPHA == 1) { NA7672LValueVO pha = this.getPhaseAndImpedanceCalculate(7, 1, requestBean.getCycle(), requestBean.getCapacity()); NA7672LValueVO imp_1 = this.getImpedance(2, 1); NA7672LValueVO imp_2 = this.getImpedance(2, 2); imp_1.setCalculateValue(pha.getCalculateValue()); imp_2.setCalculateValue(pha.getCalculateValue()); rs.add(pha); rs.add(imp_1); rs.add(imp_2); } else { } return rs; } //获取03配置里的所有值(老的03) public List getState03AllValueOld(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1_t1 = this.getListValue(1, 1, 3, "swr", 1); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } List c1_t2 = this.getListValue(1, 2, 1, "decay", 16); NA7672LValueVO c2_t1 = this.getImpedance(2, 1); NA7672LValueVO c2_t2 = this.getImpedance(2, 2); List c3 = this.getListValue(5, 1, 1, "decay", 16); if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c3) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } //写入 rs.addAll(c1_t1); rs.addAll(c1_t2); rs.add(c2_t1); rs.add(c2_t2); rs.addAll(c3); return rs; } //获取03配置里的所有值(新的) public List getState03AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1_t1 = this.getListValue(1, 1, 1, "decay", 16); List c2_t1 = this.getListValue(2, 1, 1, "decay", 16); List c4_t1 = this.getListValue(4, 1, 3, "swr", 1); List c4_t2 = this.getListValue(4, 2, 3, "swr", 1); List c5_t1 = this.getListValue(5, 1, 4, "swr", 1); List c5_t2 = this.getListValue(5, 2, 3, "swr", 1); List c6_t1 = this.getListValue(6, 1, 3, "swr", 1); List c6_t2 = this.getListValue(6, 2, 3, "swr", 1); List c7_t1 = this.getListValue(7, 1, 3, "swr", 1); List c7_t2 = this.getListValue(7, 2, 3, "swr", 1); List c8_t1 = this.getListValue(8, 1, 3, "swr", 1); List c8_t2 = this.getListValue(8, 2, 3, "swr", 1); for (NA7672LValueVO one : c1_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c2_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } //特性阻抗 NA7672LValueVO c3_t1 = this.getImpedance(3, 1); NA7672LValueVO c3_t2 = this.getImpedance(3, 2); //写入 rs.addAll(c1_t1); rs.addAll(c2_t1); rs.add(c3_t1); rs.add(c3_t2); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); rs.addAll(c7_t1); rs.addAll(c7_t2); rs.addAll(c8_t1); rs.addAll(c8_t2); return rs; } //获取04配置里的所有值 public List getState04AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1_t1 = this.getListValue(1, 1, 3, "swr", 1); List c1_t2 = this.getListValue(1, 2, 3, "swr", 1); List c3_t1 = this.getListValue(3, 1, 3, "swr", 1); List c3_t2 = this.getListValue(3, 2, 3, "swr", 1); List c4_t1 = this.getListValue(4, 1, 3, "swr", 1); List c4_t2 = this.getListValue(4, 2, 3, "swr", 1); List c5_t1 = this.getListValue(5, 1, 4, "swr", 1); List c5_t2 = this.getListValue(5, 2, 3, "swr", 1); List c6_t1 = this.getListValue(6, 1, 3, "swr", 1); List c6_t2 = this.getListValue(6, 2, 3, "swr", 1); List c7_t1 = this.getListValue(7, 1, 3, "swr", 1); List c7_t2 = this.getListValue(7, 2, 3, "swr", 1); List c8_t1 = this.getListValue(8, 1, 3, "swr", 1); List c8_t2 = this.getListValue(8, 2, 3, "swr", 1); //特性阻抗 NA7672LValueVO c2_t1 = this.getImpedance(2, 1); NA7672LValueVO c2_t2 = this.getImpedance(2, 2); //写入 rs.addAll(c1_t1); rs.addAll(c1_t2); rs.addAll(c3_t1); rs.addAll(c3_t2); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); rs.addAll(c7_t1); rs.addAll(c7_t2); rs.addAll(c8_t1); rs.addAll(c8_t2); rs.add(c2_t1); rs.add(c2_t2); return rs; } //获取05配置里的所有值 public List getState05AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } List c1_t1 = this.getListValue(1, 1, 1, "decay", 16); List c1_t2 = this.getListValue(1, 2, 1, "decay", 16); List c2_t1 = this.getListValue(2, 1, 1, "decay", 16); List c2_t2 = this.getListValue(2, 2, 1, "decay", 16); List c4_t1 = this.getListValue(4, 1, 1, "decay", 16); List c4_t2 = this.getListValue(4, 2, 1, "decay", 16); List c5_t1 = this.getListValue(5, 1, 1, "decay", 16); List c5_t2 = this.getListValue(5, 2, 1, "decay", 16); List c6_t1 = this.getListValue(6, 1, 1, "decay", 16); List c6_t2 = this.getListValue(6, 2, 1, "decay", 16); if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c1_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c2_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c2_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c4_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c4_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c5_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c5_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c6_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c6_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } //特性阻抗 NA7672LValueVO c3_t1 = this.getImpedance(3, 1); NA7672LValueVO c3_t2 = this.getImpedance(3, 2); //写入 rs.addAll(c1_t1); rs.addAll(c1_t2); rs.addAll(c2_t1); rs.addAll(c2_t2); rs.add(c3_t1); rs.add(c3_t2); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); return rs; } //获取06配置里的所有值 public List getState06AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1 = this.getListValue(1, 1, 1, "swr", 1); rs.addAll(c1); return rs; } //获取07配置里的所有值 public List getState07AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); List c1_t1 = this.getListValue(1, 1, 3, "swr", 1); List c1_t2 = this.getListValue(1, 2, 1, "decay", 16); List c2_t1 = this.getListValue(2, 1, 3, "swr", 1); List c2_t2 = this.getListValue(2, 2, 1, "decay", 16); List c4_t1 = this.getListValue(4, 1, 1, "decay", 16); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c2_t2) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c4_t1) { double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } rs.addAll(c1_t1); rs.addAll(c1_t2); rs.addAll(c2_t1); rs.addAll(c2_t2); rs.addAll(c4_t1); //特性阻抗 NA7672LValueVO c3_t1 = this.getImpedance(3, 1); NA7672LValueVO c3_t2 = this.getImpedance(3, 2); rs.add(c3_t1); rs.add(c3_t2); return rs; } //获取08配置里的所有值 public List getState08AllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } List c1_t1 = this.getListValue(1, 1, 1, "decay", 16); if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t1) { /*获取计算值*/ /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃) 测试值÷长度÷温度系数×100*/ double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } //获取驻波比 List c3_t1 = this.getListValue(3, 1, 3, "swr", 1); List c3_t2 = this.getListValue(3, 2, 3, "swr", 1); List c4_t1 = this.getListValue(4, 1, 3, "swr", 1); List c4_t2 = this.getListValue(4, 2, 3, "swr", 1); List c5_t1 = this.getListValue(5, 1, 3, "swr", 1); List c5_t2 = this.getListValue(5, 2, 3, "swr", 1); List c6_t1 = this.getListValue(6, 1, 3, "swr", 1); List c6_t2 = this.getListValue(6, 2, 3, "swr", 1); List c8_t1 = this.getListValue(8, 1, 3, "swr", 1); List c8_t2 = this.getListValue(8, 2, 3, "swr", 1); rs.addAll(c1_t1); rs.addAll(c3_t1); rs.addAll(c3_t2); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); rs.addAll(c8_t1); rs.addAll(c8_t2); /*判断是否需要计算相位差和平均特性阻抗*/ int ifNeedPHA = 0; if (requestBean.getCycle() != null) { ifNeedPHA = 1; } else { ifNeedPHA = 0; } if (ifNeedPHA == 1) { NA7672LValueVO pha = this.getPhaseAndImpedanceCalculate(7, 1, requestBean.getCycle(), requestBean.getCapacity()); NA7672LValueVO imp_1 = this.getImpedance(2, 1); NA7672LValueVO imp_2 = this.getImpedance(2, 2); imp_1.setCalculateValue(pha.getCalculateValue()); imp_2.setCalculateValue(pha.getCalculateValue()); rs.add(pha); rs.add(imp_1); rs.add(imp_2); } else { } return rs; } //获取autorec配置里的所有值 public List getStateAutoRecAllValue(NA7672LRequestBean requestBean) { List rs = new ArrayList<>(); /*判断是否需要衰减的计算值*/ int ifNeedDecay = 0; if (requestBean.getTemperture() != null) { ifNeedDecay = 1; } List c1_t1 = this.getListValue(1, 1, 1, "decay", 16); List c2_t1 = this.getListValue(2, 1, 1, "decay", 16); if (ifNeedDecay == 1) { for (NA7672LValueVO one : c1_t1) { /*获取计算值*/ /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃) 测试值÷长度÷温度系数×100*/ double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } for (NA7672LValueVO one : c2_t1) { /*获取计算值*/ /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃) 测试值÷长度÷温度系数×100*/ double wd = 1 + 0.002 * (requestBean.getTemperture() - 20); double decay_cal = one.getDecimalVal().doubleValue() / requestBean.getLength() / wd * 100; one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); } } List c4_t1 = this.getListValue(4, 1, 3, "swr", 1); List c4_t2 = this.getListValue(4, 2, 3, "swr", 1); List c5_t1 = this.getListValue(5, 1, 3, "swr", 1); List c5_t2 = this.getListValue(5, 2, 3, "swr", 1); List c6_t1 = this.getListValue(6, 1, 3, "swr", 1); List c6_t2 = this.getListValue(6, 2, 3, "swr", 1); List c7_t1 = this.getListValue(7, 1, 3, "swr", 1); List c7_t2 = this.getListValue(7, 2, 3, "swr", 1); List c8_t1 = this.getListValue(8, 1, 3, "swr", 1); List c8_t2 = this.getListValue(8, 2, 3, "swr", 1); rs.addAll(c1_t1); rs.addAll(c2_t1); rs.addAll(c4_t1); rs.addAll(c4_t2); rs.addAll(c5_t1); rs.addAll(c5_t2); rs.addAll(c6_t1); rs.addAll(c6_t2); rs.addAll(c7_t1); rs.addAll(c7_t2); rs.addAll(c8_t1); rs.addAll(c8_t2); /*判断是否需要计算相位差和平均特性阻抗*/ int ifNeedPHA = 0; if (requestBean.getCycle() != null) { ifNeedPHA = 1; } else { ifNeedPHA = 0; } if (ifNeedPHA == 1) { NA7672LValueVO pha = this.getPhaseAndImpedanceCalculate(9, 1, requestBean.getCycle(), requestBean.getCapacity()); NA7672LValueVO imp_1 = this.getImpedance(3, 1); NA7672LValueVO imp_2 = this.getImpedance(3, 2); imp_1.setCalculateValue(pha.getCalculateValue()); imp_2.setCalculateValue(pha.getCalculateValue()); rs.add(pha); rs.add(imp_1); rs.add(imp_2); } else { } return rs; } /*获取相位差和特性阻抗计算值*/ public NA7672LValueVO getPhaseAndImpedanceCalculate(int channelId, int traceId, double cycle, double capacity) { NA7672LValueVO phaseMeatured = this.getPHA(channelId, traceId); NA7672LValueVO impedanceCalculate = this.getImpedanceCalculateVal(cycle, phaseMeatured.getDecimalVal().doubleValue(), capacity); phaseMeatured.setCalculateValue(impedanceCalculate.getMeasureValue()); return phaseMeatured; } /*获取衰减(新)*/ // public List getDecayListNew(int channelId, int traceId, int fetchType, String returnType, double temperture, double length) { // List returnValueList = new ArrayList<>(); // try { // this.initTCP(); // InputStream inputStream = this.socket.getInputStream(); // OutputStream outputStream = this.socket.getOutputStream(); // // 把字节流转换成字符流 // PrintWriter printWriter = new PrintWriter(outputStream); // Scanner inFromSocket = new Scanner(inputStream); // //获取mark的x // for (int markId = 1; markId <= 16; markId++) { // NA7672LValueVO returnValue = new NA7672LValueVO(); // String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; // printWriter.println(requestString); // printWriter.flush(); // String responseString = inFromSocket.next(); // BigDecimal val = new BigDecimal(responseString); // BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); // returnValue.setLabel(returnType + "_" + valRound.toString() + "m"); // //获取mark的y // requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; // printWriter.println(requestString); // printWriter.flush(); // responseString = inFromSocket.next(); // String[] valList = responseString.split(","); // val = new BigDecimal(valList[0]); // val.setScale(4, RoundingMode.HALF_UP); // returnValue.setDecimalVal(val); // /*类别衰减、通道、轨迹线、mark*/ // returnValue.setFetchType(fetchType); // returnValue.setChannel(channelId); // returnValue.setTrace(traceId); // returnValue.setChannel(channelId); // returnValue.setMark(markId); // returnValueList.add(returnValue); // } // this.closeTcp(); // } catch (IOException e) { // e.printStackTrace(); // } // for (NA7672LValueVO one : returnValueList) { // /*获取计算值*/ // /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃) // 测试值÷长度÷温度系数×100*/ // double wd = 1 + 0.002 * (temperture - 20); // double decay_cal = one.getDecimalVal().doubleValue() / length / wd * 100; // one.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); // } // return returnValueList; // } /*获取驻波比(新)*/ public NA7672LValueVO getSWRNew(int channelId, int fetchType) { NA7672LValueVO swr1 = this.getSWR(channelId, 1, 1); NA7672LValueVO swr2 = this.getSWR(channelId, 2, 1); BigDecimal p1 = swr1.getDecimalVal(); BigDecimal p2 = swr2.getDecimalVal(); BigDecimal p3 = new BigDecimal(0.0); if (p1.compareTo(p2) == 1) { p3 = p1; } else { p3 = p2; } swr1.setMeasureValue(swr2.getDecimalVal()); swr1.setCalculateValue(p3); swr1.setFetchType(fetchType); return swr1; } /*获取列表值*/ public List getListValue(int channelId, int traceId, int fetchType, String returnType, int fetchNum) { List returnValueList = new ArrayList<>(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取mark的x for (int markId = 1; markId <= fetchNum; markId++) { NA7672LValueVO returnValue = new NA7672LValueVO(); String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); BigDecimal val = new BigDecimal(responseString); BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); returnValue.setLabel(returnType + "_" + valRound.toString() + "m"); //获取mark的y requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; printWriter.println(requestString); printWriter.flush(); responseString = inFromSocket.next(); String[] valList = responseString.split(","); val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); /*类别衰减、通道、轨迹线、mark*/ returnValue.setFetchType(fetchType); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(markId); returnValueList.add(returnValue); } this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValueList; } /*获取单一均值*/ public NA7672LValueVO getMeanValue(int channelId, int traceId) { NA7672LValueVO returnValue = new NA7672LValueVO(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取阻抗 String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MST:DATA?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); String[] valList = responseString.split(","); BigDecimal val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); returnValue.setLabel("impedance_mean"); /*类别阻抗、通道、轨迹线、mark*/ returnValue.setFetchType(2); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(-1); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValue; } /*测试1,错误的例子*/ public void test1() { try { this.initTCP(); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); String requestString = ":CALC1:TRAC1:MARK100:Y?"; // 2,写入请求 printWriter.println(requestString); printWriter.flush(); // 3,读取请求 String responseString = inFromSocket.next(); // 控制台 打印请求字符串 + 响应字符串 System.out.println(requestString + " + " + responseString); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } } /*测试2,正确的例子*/ public void test2() { try { this.initTCP(); InputStream inputStream = socket.getInputStream(); OutputStream outputStream = socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); String requestString = ":CALC1:TRAC1:MARK1:Y?"; // 2,写入请求 printWriter.println(requestString); printWriter.flush(); // 3,读取请求 String responseString = inFromSocket.next(); // 控制台 打印请求字符串 + 响应字符串 System.out.println(requestString + " + " + responseString); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } } /*获取衰减*/ public NA7672LValueVO getDecay(int channelId, int traceId, int markId) { NA7672LValueVO returnValue = new NA7672LValueVO(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取mark的x String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); BigDecimal val = new BigDecimal(responseString); BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); returnValue.setLabel("decay_" + valRound.toString() + "m"); //获取mark的y requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; printWriter.println(requestString); printWriter.flush(); responseString = inFromSocket.next(); String[] valList = responseString.split(","); val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); /*类别衰减、通道、轨迹线、mark*/ returnValue.setFetchType(1); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(markId); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValue; } /*获取衰减列表*/ public List getDecayList(int channelId, int traceId) { List returnValueList = new ArrayList<>(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取mark的x for (int markId = 1; markId <= 16; markId++) { NA7672LValueVO returnValue = new NA7672LValueVO(); String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); BigDecimal val = new BigDecimal(responseString); BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); returnValue.setLabel("decay_" + valRound.toString() + "m"); //获取mark的y requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; printWriter.println(requestString); printWriter.flush(); responseString = inFromSocket.next(); String[] valList = responseString.split(","); val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); /*类别衰减、通道、轨迹线、mark*/ returnValue.setFetchType(1); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(markId); returnValueList.add(returnValue); } this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValueList; } /*通过label获取衰减*/ public NA7672LValueVO getDecayByLabel(int channelId, int traceId, String label, double temperture, double length) { NA7672LValueVO returnVale = new NA7672LValueVO(); List list = this.getDecayList(channelId, traceId); int ifFind = 0; for (NA7672LValueVO one : list) { if (one.getLabel().equals(label)) { BeanUtil.copyProperties(one, returnVale); /*获取计算值*/ /*衰减的温度系数换算公式 = 1+0.002×(实际温度-20℃) 测试值÷长度÷温度系数×100*/ double wd = 1 + 0.002 * (temperture - 20); double decay_cal = one.getDecimalVal().doubleValue() / length / wd * 100; returnVale.setMeasureValue(new BigDecimal(decay_cal).setScale(4, RoundingMode.HALF_UP)); ifFind = 1; break; } } if (ifFind == 0) { returnVale.setIfLegal(0); returnVale.setLabel(label); } return returnVale; } /*获取阻抗*/ public NA7672LValueVO getImpedance(int channelId, int traceId) { NA7672LValueVO returnValue = new NA7672LValueVO(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取阻抗 String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MST:DATA?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); String[] valList = responseString.split(","); BigDecimal val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); returnValue.setLabel("impedance_mean"); /*类别阻抗、通道、轨迹线、mark*/ returnValue.setFetchType(2); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(-1); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValue; } /*获取驻波比*/ public NA7672LValueVO getSWR(int channelId, int traceId, int markId) { NA7672LValueVO returnValue = new NA7672LValueVO(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取mark的x String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); BigDecimal val = new BigDecimal(responseString); BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); returnValue.setLabel("swr_" + valRound.toString() + "m"); //获取mark的y requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; printWriter.println(requestString); printWriter.flush(); responseString = inFromSocket.next(); String[] valList = responseString.split(","); val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); /*类别衰减、通道、轨迹线、mark*/ returnValue.setFetchType(3); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(markId); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValue; } /*获取驻波比列表*/ public List getSWRList(int channelId, int traceId) { List returnValueList = new ArrayList<>(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //获取mark的x for (int markId = 1; markId <= 16; markId++) { NA7672LValueVO returnValue = new NA7672LValueVO(); String requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":X?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); BigDecimal val = new BigDecimal(responseString); BigDecimal valRound = val.divide(new BigDecimal(1000 * 1000), 0, RoundingMode.CEILING); returnValue.setLabel("swr_" + valRound.toString() + "m"); //获取mark的y requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MARK" + markId + ":Y?"; printWriter.println(requestString); printWriter.flush(); responseString = inFromSocket.next(); String[] valList = responseString.split(","); val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); /*类别衰减、通道、轨迹线、mark*/ returnValue.setFetchType(1); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(markId); returnValueList.add(returnValue); } this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } return returnValueList; } /*通过label获取驻波比*/ public NA7672LValueVO getSWRByLabel(int channelId, int traceId, String label) { NA7672LValueVO returnVale = new NA7672LValueVO(); List list = this.getSWRList(channelId, traceId); int ifFind = 0; for (NA7672LValueVO one : list) { if (one.getLabel().equals(label)) { BeanUtil.copyProperties(one, returnVale); ifFind = 1; break; } } if (ifFind == 0) { returnVale.setIfLegal(0); returnVale.setLabel(label); } return returnVale; } /*获取相位差*/ public NA7672LValueVO getPHA(int channelId, int traceId) { NA7672LValueVO returnValue = new NA7672LValueVO(); try { this.initTCP(); InputStream inputStream = this.socket.getInputStream(); OutputStream outputStream = this.socket.getOutputStream(); // 把字节流转换成字符流 PrintWriter printWriter = new PrintWriter(outputStream); Scanner inFromSocket = new Scanner(inputStream); //先设置触发是连续模式,默认是单点 String requestString = ":INIT" + channelId + ":CONT 1"; printWriter.println(requestString); printWriter.flush(); //再设置数据统计状态设置为开启,默认是关闭状态 requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MST 1"; printWriter.println(requestString); printWriter.flush(); //需要暂停一刻 Thread.sleep(1000); //获取相位差 requestString = ":CALC" + channelId + ":TRAC" + traceId + ":MST:DATA?"; printWriter.println(requestString); printWriter.flush(); String responseString = inFromSocket.next(); String[] valList = responseString.split(","); BigDecimal val = new BigDecimal(valList[0]); val.setScale(4, RoundingMode.HALF_UP); returnValue.setDecimalVal(val); returnValue.setLabel("pha_mean"); /*类别阻抗、通道、轨迹线、mark*/ returnValue.setFetchType(4); returnValue.setChannel(channelId); returnValue.setTrace(traceId); returnValue.setChannel(channelId); returnValue.setMark(-1); this.closeTcp(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } return returnValue; } /*获取特性阻抗计算值*/ public NA7672LValueVO getImpedanceCalculateVal(double cycle, double phaValue, double capacity) { //平均特性阻抗 = 周期数÷(相位差值/1000000)÷(电容测)×1000 NA7672LValueVO returnValue = new NA7672LValueVO(); returnValue.setFetchType(5); BigDecimal val = new BigDecimal(cycle / (phaValue / 1000000) / capacity * 1000); BigDecimal newVal = val.setScale(4, RoundingMode.HALF_UP); returnValue.setMeasureValue(newVal); return returnValue; } /*获取所有数值*/ /*public static void main(String[] args) throws IOException { String serverIp = "10.88.15.169"; int serverPort = 5025; NA7672LTCPClientUtils tcpClient = new NA7672LTCPClientUtils(serverIp, serverPort); tcpClient.initMemory("D:/state03.sta"); *//* tcpClient.test1(); tcpClient.test2(); *//* *//*单个测试*//* *//* NA7672LValueVO decay = tcpClient.getDecay(1, 1, 1); NA7672LValueVO impedance = tcpClient.getImpedance(2, 1); NA7672LValueVO swr = tcpClient.getSWR(3, 1, 1); NA7672LValueVO pha=tcpClient.getPHA(7,1); *//* *//*列表测试*//* *//*List decayList = tcpClient.getDecayList(1, 1); List swrList = tcpClient.getSWRList(3, 1);*//* *//*使用的接口测试*//* // NA7672LValueVO decay = tcpClient.getDecayByLabel(1, 1, "decay_400m", 37.5, 100); NA7672LValueVO impedance = tcpClient.getImpedance(2, 1); // NA7672LValueVO swr = tcpClient.getSWRByLabel(3, 1, "swr_1000m"); // NA7672LValueVO pha = tcpClient.getPHA(7, 1); // System.out.println("eqweqwe"); }*/ }