whyclwt
2022-05-18 ab72c6e114d7c4e83564194367ba623ca23bf09d
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#ifndef WORK_THREAD_H
#define WORK_THREAD_H
 
#include <QThread>
#include "rs485_pack.h"
#include "rs485_powerctrl.h"
#include "Common/app_define.h"
#include <QTimer>
#include "Common/classxml.h"
 
 
 
//#define _debug_demo_
 
 
 
extern QStringList alarmStateText;
 
 
class Work_Thread : public QThread
{
    Q_OBJECT
 
public:
    Work_Thread();
    virtual void run();
    ~Work_Thread();
 
public:
    static const int CMD_Null = 0;
    static const int CMD_StartTest = 1;
    static const int CMD_StopTest = 2;
    //static const int CMD_StartDischarge = 1;
    //static const int CMD_StopDischarge = 2;
    //static const int CMD_StartCharge = 3;
    //static const int CMD_StopCharge = 4;
    static const int CMD_SetTestParam = 5;
    static const int CMD_SetActivePack = 6;
 
 
 
    static const int CMD_GetAdjParamSet = 21;
    static const int CMD_SetAdjParamSet = 22;
    static const int CMD_AdjStartDis = 23;
    static const int CMD_AdjStartChr = 24;
    static const int CMD_AdjStopTest = 25;
 
 
    static const int CMD_GetVolDropParam = 26;
    static const int CMD_SetVolDropParam = 27;
 
 
    static const int RES_OK = 0;
    static const int RES_Error_MOS_State = -21;
 
 
public:
 
    TEST_PARAM testParam;
    PACK_PARAM packParam;
    SYSTEM_PARAM_XML sysParamXml;
 
    ADJ_PARAM_SET adjParamSet;
    VOL_DROP_PARAM volDropParam;
 
    MOD_TEST_DATA modTestData;
    MOD_TEST_DATA modTestData_Origin;
    PACK_DATA packData;
    PACK_DATA packData_Origin;
    CELL_MAX_MIN cellMaxMInValue;
 
    ICON_STATE iconState;
 
    TEST_STATE_DATA testStateData;
 
    RS485_Pack *rs485_Pack;
    RS485_PowerCtrl *rs485_PowerCtrl;
 
    REMOTE_STATE remoteState;
 
    PASSTHROUGH_ST passthroughState;
 
    quint8 adjWorkState;
 
    QString packBarcode;
 
 
    void setWorkThreadCMD(int cmd);
    void saveTestParam(TEST_PARAM &testparam);
    void savePackParam(PACK_PARAM &packparam);
    void saveSysParam(SYSTEM_PARAM_XML &sysparam);
    void setRemoteState(REMOTE_STATE &st);
    void setPackBarcodeStr(QString code);
    void saveAdjParam(ADJ_PARAM_SET &param);
    void saveVolDropParam(VOL_DROP_PARAM &param);
    void setPassthroughState(PASSTHROUGH_ST &st);
 
    void setPageIndex(const quint8 pageindex);
    quint8 getPageIndex(void);
 
    int startErrorCheck();
 
    CT_DATE_TIME getTestStartTime();
 
private:
    int workThreadCMD;
    int cmdExecResult;
 
    quint8 stateWorkCount;
 
    QTimer *timer_1s;
 
    quint8 pageIndex;
 
    FBO_DATA fboData;
    CT_DATE_TIME testStartTime;
    QString testfilename;
 
 
    void processWorkThreadCMD();
 
    void initValueForParam(void);
 
    int initTestState();
 
    int setTestParam(const quint8 testtype);
 
    int setIOBoardState(const quint8 testype,bool is_start);
 
    int setPreChgMos_Close();
    int setPreChgMos_Break();
    int setChargeMos_Close();
    int setChargeMos_Break();
    int setDischgMos_Close();
    int setDischgMos_Break();
 
    int closePrechgMos(void);
 
    int getMos_State(quint16 *premos,quint16 *chgmos,quint16 *dismos);
 
    int setMOS_BeforeDischarge();
    int setMOS_AfterDischarge();
    int openDischargePower();
    int closeDischargePower();
    int startDischarge();
    int stopDischarge(const quint8 stoptype);
 
    int setMOS_BeforeCharge();
    int setMOS_AfterCharge();
    int openChargePower();
    int closeChargePower();
    int startCharge();
    int stopCharge(const quint8 stoptype);
 
    int activePackByCharge(void);
 
    int getAdjParamFromIOBoard(void);
    int setAdjParamToIOBoard(void);
 
    int getDropVolParamFromIOBoard(void);
    int setDropVolParamToIOBoard(void);
 
 
    void CheckIfStop();
 
    quint16 getCellVolLowCount(const quint16 celllow);
    quint16 getCellVolHighCount(const quint16 cellhigh);
 
    quint16 getCellTempHighCount(const quint16 cellhigh);
 
 
    void CheckIconState(void);
    quint8 CheckDiskState(const QString &disk);
 
    QString format_data_name(void);
    void initFBO_Data(FBO_DATA_HEAD_START &fbo_data_head_start);
    void makeFBO_Data(void);
    void SaveFbo_Data(bool force_save);
    void closeTestFbo_Data(const quint8 stoptype);
 
 
    
signals:
    void sendCMD_Result(int res);
    
private slots:
    void RecvModTestData(MOD_TEST_DATA testdata);
 
    void RecvPackData(PACK_DATA packdata);
 
    void Timer1sSlot(void);
 
 
};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
#endif // WORK_THREAD_H