lxw
2023-05-25 f3c27fb78447449a950ba73c5e72ceda64ad8a12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.whyc.dto.FBS9100_ComBase;
import com.whyc.dto.Response;
import com.whyc.mapper.Li9130DcdcParamMapper;
import com.whyc.pojo.Li9130DcdcParam;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
@Service
public class Li9130DcdcParamService {
    @Resource
    private Li9130DcdcParamMapper mapper;
 
    //读取DCDC工作参数
    public Response searchParam(int devId) {
        boolean bl=checkOpCmdAndAck(devId, FBS9100_ComBase.CMD_GetLiDCDCParam, FBS9100_ComBase.CMD_GetLiDCDCParam_Ack, 40);
        PageHelper.startPage(1,1);
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("dev_id",devId);
        Li9130DcdcParam dcdcParam=mapper.selectOne(wrapper);
        return new Response().setII(1,bl,dcdcParam,bl==true?"查询成功!":"查询失败!");
    }
    //设置DCDC工作参数
    public Response updateParam(Li9130DcdcParam param) {
        boolean bl=mapper.updateParam(param);
        boolean b=false;
        if(bl){
            int cmd=param.getOpCmd();
            int cmd_ack=0;
            switch (cmd) {
                case FBS9100_ComBase.CMD_GetLiDCDCParam:
                    cmd_ack = FBS9100_ComBase.CMD_GetLiDCDCParam_Ack;
                    break;
                case FBS9100_ComBase.CMD_SetLiDCDCParam:
                    cmd_ack = FBS9100_ComBase.CMD_SetLiDCDCParam_Ack;
                    break;
            }
            b=checkOpCmdAck(param.getDevId(),cmd_ack, 40);
        }
        return new Response().set(1,b,b==true?"修改成功!":"修改失败!");
    }
    /**查询op_cmd和op_cmd_ack是否相同判断设备指令是否被正常接收*/
    public  boolean checkOpCmdAck(Integer devId,Integer cmdAck,Integer sendCounts){
        boolean res_exe = false;
        PageHelper.startPage(1,1);
        QueryWrapper wrapper1=new QueryWrapper();
        wrapper1.eq("dev_id",devId);
        for(int n=0; n<sendCounts; n++)
        {
            Li9130DcdcParam dcdcParam=mapper.selectOne(wrapper1);
            if(dcdcParam!=null){
                if(dcdcParam.getOpCmd().intValue() == cmdAck.intValue())
                {
                    res_exe = true;
                    break;
                }
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else{
               break;
            }
 
        }
 
        return res_exe;
    }
    /**查询op_cmd和op_cmd_ack是否相同判断设备指令是否被正常接收*/
    public  boolean checkOpCmdAndAck(Integer devId,Integer cmd,Integer cmdAck,Integer sendCounts){
        boolean res_exe = false;
        //先更新op_cmd
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.set("op_cmd",cmd);
        wrapper.eq("dev_id",devId);
        mapper.update(null,wrapper);
 
        //校验op_cmd和后op_cmd(cmdAck)
        PageHelper.startPage(1,1);
        QueryWrapper wrapper1=new QueryWrapper();
        wrapper1.eq("dev_id",devId);
        for(int n=0; n<sendCounts; n++) {
            Li9130DcdcParam dcdcParam=mapper.selectOne(wrapper1);
            if(dcdcParam!=null){
                if(dcdcParam.getOpCmd().intValue() == cmdAck.intValue()) {
                    res_exe = true;
                    break;
                }
                try {
                    Thread.sleep(250);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }else{
                break;
            }
        }
        return res_exe;
    }
 
 
}