Browse Source

20210304v1.3

recovery
zy_Java 4 years ago
parent
commit
72d654d2bf
  1. 139
      beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java
  2. 46
      util/src/main/java/com/ccsens/util/CRCUtil.java
  3. 13
      util/src/test/java/com/ccsens/util/OtherTest.java

139
beneficiation/src/main/java/com/ccsens/beneficiation/service/ParameterService.java

@ -3,8 +3,12 @@ package com.ccsens.beneficiation.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ccsens.beneficiation.bean.dto.ParameterDto; import com.ccsens.beneficiation.bean.dto.ParameterDto;
import com.ccsens.beneficiation.bean.po.EquipmentType;
import com.ccsens.beneficiation.bean.po.EquipmentTypeExample;
import com.ccsens.beneficiation.bean.vo.ParameterVo; import com.ccsens.beneficiation.bean.vo.ParameterVo;
import com.ccsens.beneficiation.persist.dao.RecordDao; import com.ccsens.beneficiation.persist.dao.RecordDao;
import com.ccsens.beneficiation.persist.mapper.EquipmentTypeMapper;
import com.ccsens.util.CRCUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@ -24,6 +28,8 @@ import java.util.List;
public class ParameterService implements IParameterService{ public class ParameterService implements IParameterService{
@Resource @Resource
private RecordDao recordDao; private RecordDao recordDao;
@Resource
private EquipmentTypeMapper equipmentTypeMapper;
@Override @Override
public ParameterVo.QueryParameter queryParameter(Object param) { public ParameterVo.QueryParameter queryParameter(Object param) {
@ -84,83 +90,76 @@ public class ParameterService implements IParameterService{
} }
parameterInfo.setParameter(parameters); parameterInfo.setParameter(parameters);
return parameterInfo;
}
@Override
public void updateParameter(ParameterDto.ParameterInfo param) {
if(ObjectUtil.isNull(param)){
return;
}
byte[] header = new byte[]{(byte)0xff,(byte)0xfe,(byte)0x00};
//电磁阀1
ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
if(ObjectUtil.isNotNull(solenoidValue1)){
if(ObjectUtil.isNotNull(solenoidValue1.getSettingValue())){
//根据id和数据类型 查找该设备的addr 设置值是1
EquipmentTypeExample equipmentTypeExample = new EquipmentTypeExample();
equipmentTypeExample.createCriteria().andEquipmentIdEqualTo(solenoidValue1.getId()).andTypeEqualTo((byte) 1);
List<EquipmentType> equipmentTypes = equipmentTypeMapper.selectByExample(equipmentTypeExample);
if(CollectionUtil.isNotEmpty(equipmentTypes)){
EquipmentType equipmentType = equipmentTypes.get(0);
//计算value的高低值
byte uc1 = (byte) (solenoidValue1.getSettingValue().intValue() >> 8);
byte uc2 = (byte) (solenoidValue1.getSettingValue().intValue() & 0xff);
//计算addr的高低值
byte addr1 = (byte) (equipmentType.getAddr() >> 8);
byte addr2 = (byte) (equipmentType.getAddr() & 0xff);
//TODO 长度未处理 传感器地址未处理
byte[] center = new byte[]{(byte)0x00,(byte)0x06,addr1,addr2,uc1,uc2};
byte[] crc = new byte[2];
CRCUtil.crc16(crc,center,0,center.length);
byte[] all = new byte[header.length + center.length + crc.length];
System.arraycopy(header,0,all,0,header.length);
System.arraycopy(center,0,all,header.length,center.length);
System.arraycopy(crc,0,all,header.length + center.length,crc.length);
all[2] = (byte) (all.length - 3);
}
}
}
// //电磁阀1
// ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// if(ObjectUtil.isNotNull(solenoidValue1)){
// //
// List<ParameterVo.TransducerValue> transducerValues = new ArrayList<>(); // }
// ParameterVo.TransducerValue transducer1 = new ParameterVo.TransducerValue(6L,"transducer1","实时/设置1", BigDecimal.valueOf(45)); // //电磁阀1
// ParameterVo.TransducerValue transducer2 = new ParameterVo.TransducerValue(7L,"transducer2","实时/设置2", BigDecimal.valueOf(8)); // ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// ParameterVo.TransducerValue transducer3 = new ParameterVo.TransducerValue(8L,"transducer3","实时/设置3", BigDecimal.valueOf(67)); // if(ObjectUtil.isNotNull(solenoidValue1)){
// ParameterVo.TransducerValue transducer4 = new ParameterVo.TransducerValue(10L,"transducer4","实时/设置4", BigDecimal.valueOf(75));
// transducerValues.add(transducer1);
// transducerValues.add(transducer2);
// transducerValues.add(transducer3);
// transducerValues.add(transducer4);
//
// List<ParameterVo.Transducer> transducers = new ArrayList<>();
// ParameterVo.Transducer transducer = new ParameterVo.Transducer();
// transducer.setTitle("变频器");
// transducer.setValues(transducerValues);
// transducers.add(transducer);
//
// List<ParameterVo.TransducerValue> transducerValues1 = new ArrayList<>();
// ParameterVo.TransducerValue transducer11 = new ParameterVo.TransducerValue(6L,"solenoidValue1","实时/设置1", BigDecimal.valueOf(45));
// ParameterVo.TransducerValue transducer21 = new ParameterVo.TransducerValue(7L,"solenoidValue2","实时/设置2", BigDecimal.valueOf(8));
// transducerValues1.add(transducer11);
// transducerValues1.add(transducer21);
//
// ParameterVo.Transducer transducer12 = new ParameterVo.Transducer();
// transducer12.setTitle("电磁阀");
// transducer12.setValues(transducerValues1);
// transducers.add(transducer12);
//
// parameterInfo.setTransducers(transducers);
//
//
// List<ParameterVo.BeltWeigher> beltWeighers1 = new ArrayList<>();
// ParameterVo.BeltWeigher beltWeigher1 = new ParameterVo.BeltWeigher();
// beltWeigher1.setTitle("皮带秤");
// List<ParameterVo.BeltWeigherValue> beltWeigherValueList1 = new ArrayList<>();
// ParameterVo.BeltWeigherValue beltWeigher01 = new ParameterVo.BeltWeigherValue(1L,"实时/累计", BigDecimal.valueOf(12),BigDecimal.valueOf(1212));
// beltWeigherValueList1.add(beltWeigher01);
// beltWeigher1.setValues(beltWeigherValueList1);
// beltWeighers1.add(beltWeigher1);
//
// //
// ParameterVo.BeltWeigher beltWeigher2 = new ParameterVo.BeltWeigher(); // }
// beltWeigher2.setTitle("流量计"); // //电磁阀1
// List<ParameterVo.BeltWeigherValue> beltWeigherValueList2 = new ArrayList<>(); // ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// ParameterVo.BeltWeigherValue beltWeigher02 = new ParameterVo.BeltWeigherValue(2L,"实时/累计", BigDecimal.valueOf(16),BigDecimal.valueOf(1524)); // if(ObjectUtil.isNotNull(solenoidValue1)){
// ParameterVo.BeltWeigherValue beltWeigher03 = new ParameterVo.BeltWeigherValue(3L,"实时/累计", BigDecimal.valueOf(5),BigDecimal.valueOf(232));
// beltWeigherValueList2.add(beltWeigher02);
// beltWeigherValueList2.add(beltWeigher03);
// beltWeigher2.setValues(beltWeigherValueList2);
// beltWeighers1.add(beltWeigher2);
// parameterInfo.setBeltWeigher(beltWeighers1);
// //
// List<ParameterVo.Parameter> parameters = new ArrayList<>(); // }
// ParameterVo.Parameter parameter = new ParameterVo.Parameter(); // //电磁阀1
// parameter.setTitle("电耳"); // ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// List<ParameterVo.ParameterThreshold> parameterThresholds = new ArrayList<>(); // if(ObjectUtil.isNotNull(solenoidValue1)){
// //
// ParameterVo.ParameterThreshold parameterThreshold1 = new ParameterVo.ParameterThreshold(11L,"electricEar1","实时",BigDecimal.valueOf(60), // }
// new ParameterVo.ThresholdValue(1L,"thresholdValue1","阀值1",BigDecimal.valueOf(20),BigDecimal.valueOf(60)), // //电磁阀1
// new ParameterVo.ThresholdValue(2L,"thresholdValue2","阀值2",BigDecimal.valueOf(30),BigDecimal.valueOf(70)), // ParameterDto.Parameter solenoidValue1 = param.getSolenoidValue1();
// new ParameterVo.ThresholdValue(3L,"thresholdValue3","阀值3",BigDecimal.valueOf(40),BigDecimal.valueOf(80))); // if(ObjectUtil.isNotNull(solenoidValue1)){
// //
// ParameterVo.ParameterThreshold parameterThreshold2 = new ParameterVo.ParameterThreshold(12L,"electricEar1","实时",BigDecimal.valueOf(65), // }
// new ParameterVo.ThresholdValue(4L,"thresholdValue1","阀值1",BigDecimal.valueOf(30),BigDecimal.valueOf(70)), //生成数组
// new ParameterVo.ThresholdValue(5L,"thresholdValue2","阀值2",BigDecimal.valueOf(40),BigDecimal.valueOf(80)),
// new ParameterVo.ThresholdValue(6L,"thresholdValue3","阀值3",BigDecimal.valueOf(50),BigDecimal.valueOf(90)));
// parameterThresholds.add(parameterThreshold1);
// parameterThresholds.add(parameterThreshold2);
// parameter.setValues(parameterThresholds);
// parameters.add(parameter);
// parameterInfo.setParameter(parameters);
return parameterInfo;
}
@Override
public void updateParameter(ParameterDto.ParameterInfo param) {
} }
} }

46
util/src/main/java/com/ccsens/util/CRCUtil.java

@ -0,0 +1,46 @@
package com.ccsens.util;
public class CRCUtil {
public static void crc16(byte crc[], byte data[], int index, int len) {
// 预置16位crc寄存器,初值全部为1
int wcrc = 0xFFFF;
// 定义中间变量
int temp;
// 定义计数
int i = 0, j = 0, k = index;
// 循环计算每个数据
for (i = 0; i < len; i++)
{
// 将八位数据与crc寄存器亦或
temp = (data[k] & 0xFF);
// 指针地址增加,指向下个数据
k++;
// 将数据存入crc寄存器
wcrc ^= temp;
// 循环计算数据的
for (j = 0; j < 8; j++)
{
// 判断右移出的是不是1,如果是1则与多项式进行异或。
if ((wcrc & 0x0001) == 1)
{
// 先将数据右移一位
wcrc >>= 1;
// 与上面的多项式进行异或
wcrc ^= 0XA001;
} else// 如果不是1,则直接移出
{
// 直接移出
wcrc >>= 1;
}
}
}
// crc的值
temp = wcrc;
// crc的低八位
crc[0] = (byte)(wcrc & 0xFF);
// crc的高八位
crc[1] = (byte)((wcrc >> 8) & 0xFF);
}
}

13
util/src/test/java/com/ccsens/util/OtherTest.java

@ -105,5 +105,18 @@ public class OtherTest {
System.out.print(aa.b); System.out.print(aa.b);
}); });
}
@Test
public void test7() {
int a = 0x0A;
int b = 0x08;
System.out.println(a << 8 | b);
int c = 2568;
int uc1 = c >> 8;
int uc2 = c & 0xff;
System.out.println(Integer.toHexString(uc1));
System.out.println(Integer.toHexString(uc2));
} }
} }

Loading…
Cancel
Save