package com.cbsd.client.parse; import com.cbsd.client.parse.IParseDataInterface; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component public class TemperatureParser implements IParseDataInterface{ @Override public String parsePhysicalFromData(int sn, byte[] sourceData, byte[] fildData, String endian, String binStr) { List serialPortDataHexList = new ArrayList<>(); for (byte b : fildData) { int h = (b >>> 4) & 0xF; int l = b & 0xF; char ch = (char) ((h < 10) ? ('0' + h) : ('A' + h - 10)); char cl = (char) ((l < 10) ? ('0' + l) : ('A' + l - 10)); String sb = String.valueOf(ch) + cl; serialPortDataHexList.add(sb); } //温度 String temperatureChar = serialPortDataHexList.get(0) + serialPortDataHexList.get(1); double temperature = Integer.parseInt(temperatureChar, 16) / 10.0; return String.valueOf(temperature); } @Override public String comment() { return "温湿度解析:第一个字节乘256+第二个字节,结果除10"; } }