Browse Source

1、优化IEEE754算法;2、添加采集瞬时冷量;

master
mh 2 months ago
parent
commit
ff26bf26d9
  1. 6
      user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java
  2. 7
      user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java
  3. 29
      user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java
  4. 44
      user-service/src/test/java/com/mh/user/TestJwtUtils.java

6
user-service/src/main/java/com/mh/user/utils/AnalysisReceiveOrder485.java

@ -90,12 +90,12 @@ public class AnalysisReceiveOrder485 {
System.out.println("插入时间30"+dateStr); System.out.println("插入时间30"+dateStr);
} }
try { try {
if(registerAddr.equals("32") || registerAddr.equals("33") || registerAddr.equals("35")){ if(registerAddr.equals("32") || registerAddr.equals("33") || registerAddr.equals("35") || registerAddr.equals("36")){
dataResultCh.setDeviceAddr(cloudId); dataResultCh.setDeviceAddr(cloudId);
dataResultCh.setDeviceType(deviceCodeParam.getDeviceType()); dataResultCh.setDeviceType(deviceCodeParam.getDeviceType());
dataResultCh.setCurDate(sdf1.parse(dateStr)); dataResultCh.setCurDate(sdf1.parse(dateStr));
data = decimalFormat.format(ExchangeStringUtil.hexToSingle(data));//十六进制字符串转IEEE754浮点型 data = decimalFormat.format(Math.abs(ExchangeStringUtil.hexToSingle(data)));//十六进制字符串转IEEE754浮点型
dataResultCh.setCurValue(data); dataResultCh.setCurValue(data);
dataResultCh.setRegisterAddr(deviceCodeParam.getRegisterAddr()); dataResultCh.setRegisterAddr(deviceCodeParam.getRegisterAddr());
dataResultCh.setRegisterName(deviceCodeParam.getRegisterName()); dataResultCh.setRegisterName(deviceCodeParam.getRegisterName());
@ -117,7 +117,7 @@ public class AnalysisReceiveOrder485 {
dataResultCl.setGrade(deviceCodeParam.getGrade()); dataResultCl.setGrade(deviceCodeParam.getGrade());
dataResultCl.setProjectID(deviceCodeParam.getProjectID()); dataResultCl.setProjectID(deviceCodeParam.getProjectID());
String projectName=projectInfoService.selectName(deviceCodeParam.getProjectID()); String projectName=projectInfoService.selectName(deviceCodeParam.getProjectID());
log.info("冷量计==>" + cloudId+",读数==>" + lData+",项目名称==>"+projectName); log.info("冷量计==>" + cloudId+",累计读数==>" + lData+",项目名称==>"+projectName);
if (lData<99999999){ if (lData<99999999){
if (lData!=2231365){ if (lData!=2231365){
dataResultService.saveDataResultCl(dataResultCl); dataResultService.saveDataResultCl(dataResultCl);

7
user-service/src/main/java/com/mh/user/utils/ExchangeStringUtil.java

@ -1053,9 +1053,8 @@ public class ExchangeStringUtil {
* @date: 2021/9/10 16:57 * @date: 2021/9/10 16:57
*/ */
public static float hexToSingle(String s ) { public static float hexToSingle(String s ) {
int ieee754Int = Integer.parseInt(s, 16); BigInteger data = new BigInteger(s,16);
float realValue = Float.intBitsToFloat(ieee754Int); return Float.intBitsToFloat(data.intValue());
return realValue;
} }
//Base64转十六进制字符串 //Base64转十六进制字符串
@ -1296,7 +1295,7 @@ public class ExchangeStringUtil {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime="";//当前时间 String currentTime="";//当前时间
Calendar cal=Calendar.getInstance(); Calendar cal=Calendar.getInstance();
if (curDate.length()>0){ if (!curDate.isEmpty()){
Date date = df.parse(curDate); Date date = df.parse(curDate);
cal.setTime(date); cal.setTime(date);
} }

29
user-service/src/main/java/com/mh/user/utils/GetReadOrder485.java

@ -1,21 +1,14 @@
package com.mh.user.utils; package com.mh.user.utils;
import com.mh.user.entity.*; import com.mh.user.entity.*;
import com.mh.user.model.OrderParamModel;
import com.mh.user.serialport.SerialPortThread; import com.mh.user.serialport.SerialPortThread;
import com.mh.user.service.DeviceCodeParamService; import com.mh.user.service.DeviceCodeParamService;
import com.mh.user.service.DeviceInstallService; import com.mh.user.service.DeviceInstallService;
import com.mh.user.service.RegisterAddrService; import com.mh.user.service.RegisterAddrService;
import com.mh.user.service.chillers.GatewayManageService;
import com.mh.user.service.chillers.OrderMessageService; import com.mh.user.service.chillers.OrderMessageService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.Get;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import javax.imageio.spi.RegisterableService;
import java.net.UnknownHostException;
import java.text.DecimalFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
@ -137,6 +130,8 @@ public class GetReadOrder485 {
str = str + "0300500002"; str = str + "0300500002";
} else if (cloudType.equalsIgnoreCase("35")){ // 瞬时流量/小时 } else if (cloudType.equalsIgnoreCase("35")){ // 瞬时流量/小时
str = str + "0300040002"; //0300000002(秒)、0300020002(分)、0300040002(时) str = str + "0300040002"; //0300000002(秒)、0300020002(分)、0300040002(时)
} else if (cloudType.equalsIgnoreCase("36")){ // 瞬时冷量
str = str + "0300140002";
} }
byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(str); byte[] strOrder = ExchangeStringUtil.hexStrToBinaryStr(str);
int checkNum = CRC16.CRC16_MODBUS(strOrder); int checkNum = CRC16.CRC16_MODBUS(strOrder);
@ -359,8 +354,26 @@ public class GetReadOrder485 {
deviceCodeParamEntity2.setRegisterName("瞬时流量"); deviceCodeParamEntity2.setRegisterName("瞬时流量");
String strData2=createCloudOrder(deviceCodeParamEntity2); String strData2=createCloudOrder(deviceCodeParamEntity2);
deviceCodeParamEntity2.setStrData(strData2); deviceCodeParamEntity2.setStrData(strData2);
deviceCodeParamEntity2.setGrade(2); deviceCodeParamEntity2.setGrade(10);
deviceCodeParamEntityList.add(deviceCodeParamEntity2); deviceCodeParamEntityList.add(deviceCodeParamEntity2);
//流量计冷量累积量
DeviceCodeParamEntity deviceCodeParamEntity3 = new DeviceCodeParamEntity();
deviceCodeParamEntity3.setRegisterAddr("36");
deviceCodeParamEntity3.setFunCode("03");
deviceCodeParamEntity3.setDeviceAddr(devices.getDeviceAddr());
deviceCodeParamEntity3.setDeviceName(devices.getDeviceName());
deviceCodeParamEntity3.setDeviceType(devices.getDeviceType());
deviceCodeParamEntity3.setBaudRate(devices.getBaudRate());
deviceCodeParamEntity3.setBrand(devices.getBrand());
deviceCodeParamEntity3.setDataPort(devices.getDataPort());
deviceCodeParamEntity3.setProjectID(devices.getProjectID());
deviceCodeParamEntity3.setParity(devices.getParity());
deviceCodeParamEntity3.setDigit(2); //保留小数位
deviceCodeParamEntity3.setRegisterName("瞬时冷量");
String strDat3 =createCloudOrder(deviceCodeParamEntity3);
deviceCodeParamEntity3.setStrData(strDat3);
deviceCodeParamEntity3.setGrade(11);
deviceCodeParamEntityList.add(deviceCodeParamEntity3);
}else if (devices.getDeviceType().equals("电表")){ }else if (devices.getDeviceType().equals("电表")){
DeviceCodeParamEntity deviceCodeParamEntity1 = new DeviceCodeParamEntity(); DeviceCodeParamEntity deviceCodeParamEntity1 = new DeviceCodeParamEntity();

44
user-service/src/test/java/com/mh/user/TestJwtUtils.java

@ -1,6 +1,7 @@
package com.mh.user; package com.mh.user;
import com.mh.user.model.SysUser; import com.mh.user.model.SysUser;
import com.mh.user.utils.ExchangeStringUtil;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
@ -137,23 +138,30 @@ public class TestJwtUtils {
public static void main(String[] args) { public static void main(String[] args) {
SysUser user = new SysUser(); // SysUser user = new SysUser();
user.setId((long) 1); // user.setId((long) 1);
user.setUserName("admin"); // user.setUserName("admin");
String token = generateJsonWebToken(user); // String token = generateJsonWebToken(user);
//
System.out.println(token); // System.out.println(token);
//
Claims claims = checkJWT(token); // Claims claims = checkJWT(token);
if (claims != null) { // if (claims != null) {
String id = claims.get("id").toString(); // String id = claims.get("id").toString();
String name = claims.get("name").toString(); // String name = claims.get("name").toString();
//
System.out.println("id:" + id); // System.out.println("id:" + id);
System.out.println("name:" + name); // System.out.println("name:" + name);
//
} // }
String receiveData = "58 03 04 E8 FF 00 10 37 6A".replaceAll(" ", "");
} String data = receiveData.substring(receiveData.length() - 8, receiveData.length() - 6)
+ receiveData.substring(receiveData.length() - 6, receiveData.length() - 4)
+ receiveData.substring(receiveData.length() - 12, receiveData.length() - 10)
+ receiveData.substring(receiveData.length() - 10, receiveData.length() - 8);
System.out.println(data);
float c4FBC834 = ExchangeStringUtil.hexToSingle("C4FBC834");
System.out.println(c4FBC834);
}
} }

Loading…
Cancel
Save