严智鑫
2025-09-22 fa095d4c1a440cf28a9ac82aaf9fe26984010670
丝印页面修改,通讯加null验证
3个文件已修改
99 ■■■■ 已修改文件
JiuMuMesParent/common/servicebase/src/main/java/com/mes/device/PlcParameterObject.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/SilkScreen/SilkScreen.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)));
            }
        }
    }
JiuMuMesParent/moduleService/DeviceInteractionModule/src/main/java/com/mes/common/S7objectMachine.java
@@ -53,24 +53,26 @@
    }
    public void readData() {
        try {
            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
            int maxRead=1092;
            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
                    (PlcMesObject.getPlcAddressLength()/maxRead):
                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
            for (int i = 0; i <size ; i++) {
                int begin=i*maxRead;
                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
                System.arraycopy(getplcvlues,0,resultValues,begin,length);
            }
            if (resultValues != null) {
            byte[] resultValues=plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
//            byte[] resultValues=new byte[PlcMesObject.getPlcAddressLength()];
//            int maxRead=1092;
//            int size=PlcMesObject.getPlcAddressLength()%maxRead==0?
//                    (PlcMesObject.getPlcAddressLength()/maxRead):
//                    (PlcMesObject.getPlcAddressLength()/maxRead+1);
//            for (int i = 0; i <size ; i++) {
//                int begin=i*maxRead;
//                int length=(i==size-1?PlcMesObject.getPlcAddressLength()-begin:maxRead);
//                String beginAddress=PlcMesObject.getPlcAddressBegin().substring(0, PlcMesObject.getPlcAddressBegin().indexOf("."))+"."+begin;
//                byte[] getplcvlues = plccontrol.readByte(beginAddress, length);
//                System.arraycopy(getplcvlues,0,resultValues,begin,length);
//            }
            if (resultValues.length>0) {
                PlcMesObject.setPlcParameterList(resultValues);
            }
        } catch (Exception e) {
            PlcMesObject=null;
            log.info("异常:ip:{},port:{},错误{}",this.ip,this.port,e.getMessage());
            log.info("异常:ip:{},port:{},错误{},{}",this.ip,this.port,e.getMessage(),e.toString());
        }
    }
}
UI-Project/src/views/SilkScreen/SilkScreen.vue
@@ -51,24 +51,17 @@
        // 假设后端返回的数据格式与 handleMessage 预期一致
        const responseData = res.data || {};
        findMachine.value =responseData;
        if (Object.keys(findMachine.value).length === 0){
          if(findMachine.value.remark.toString()!=errorScanId&&findMachine.value.remark.toString()!=""&&findMachine.value.remark.toString()!=undefined){
            //有数据就弹窗
            if(errorOpen){
              ElMessageBox.close();
            }
            errorScanId=findMachine.value.remark.toString();
            errorInfoFuntion(findMachine.value.remark.toString());
            errorOpen=true;
          }else if(findMachine.value.remark.toString()==""&&errorOpen){
            ElMessageBox.close();
            errorOpen=false;
          }
        }
      }
    });
    // 线下数据
    // // 线下数据
    // request.post("/deviceInteraction/tasking/selectGlassDownLine").then((res) => { // 替换为你的API端点
    //   if (res.code === 200) {
    //     // 假设后端返回的数据格式与 handleMessage 预期一致
    //     const responseData = res.data || {};
    //     downLineTask.value =responseData;
    //   }
    // });
  } catch (err) {
    console.error('定时请求后端接口失败:', err);
  }
@@ -265,7 +258,7 @@
      <el-button :type="(findMachine['state']=='暂停'?'danger':'success')" id="ButtonMachineStatus" 
      @click="machineStatus((findMachine['state']=='暂停'?'开工':'暂停'))">
      {{findMachine['state']=='开工'?$t('functionState.start'):$t('functionState.stop')}}</el-button>
      <el-button type="primary" id="ButtonTopLine" @click="topLine">{{$t('functionState.topLine')}}</el-button>
<!--      <el-button type="primary" id="ButtonTopLine" @click="topLine">{{$t('functionState.topLine')}}</el-button>-->
    </div>
    <div id="main-body" style=" min-height:240px;">
      <!-- 表格内容 -->