严智鑫
2025-09-22 fa095d4c1a440cf28a9ac82aaf9fe26984010670
JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java
@@ -155,26 +155,32 @@
     * @param plcValueArray PLC读取回来的byte类型数据集合
     */
    public void setPlcParameterList(byte[] plcValueArray) {
        if (plcParameterMap != null) {
            Collection<PlcParameterInfo> values=  plcParameterMap.values();
            for (PlcParameterInfo plcParameterInfo :values) {
                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
        if (plcValueArray==null||!(plcValueArray.length>0)){
            log.info("plcValueArray is null or empty");
            return ;
        }
        if (plcParameterMap==null){
            log.info("plcParameterMap is null or empty");
            return ;
        }
        Collection<PlcParameterInfo> values=  plcParameterMap.values();
        for (PlcParameterInfo plcParameterInfo :values) {
            byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
//                System.out.println(plcParameterInfo.getAddressLength());
                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
                }
                if (plcParameterInfo.getAddressLength() == 2) {
                    plcParameterInfo.setValue(String.valueOf(ShortUtil.toUInt16(valueList)));
                } else if (plcParameterInfo.getAddressLength() == 4) {
                    plcParameterInfo.setValue(String.valueOf(IntegerUtil.toUInt32(valueList)));
                }else if(plcParameterInfo.getAddressLength()==256){
                    StringConverter converter = new StringConverter();
                    String s="";
                    String extract1 = converter.extract(s.getClass(),valueList, 0, 0);
                    plcParameterInfo.setValue(extract1);
                }else {
                    plcParameterInfo.setValue((byteToHexString(valueList)));
                }
            for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
                Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
            }
            if (plcParameterInfo.getAddressLength() == 2) {
                plcParameterInfo.setValue(String.valueOf(ShortUtil.toUInt16(valueList)));
            } else if (plcParameterInfo.getAddressLength() == 4) {
                plcParameterInfo.setValue(String.valueOf(IntegerUtil.toUInt32(valueList)));
            }else if(plcParameterInfo.getAddressLength()==256){
                StringConverter converter = new StringConverter();
                String s="";
                String extract1 = converter.extract(s.getClass(),valueList, 0, 0);
                plcParameterInfo.setValue(extract1);
            }else {
                plcParameterInfo.setValue((byteToHexString(valueList)));
            }
        }
    }