|
|
|
|
#pragma once
|
|
|
|
|
#ifndef _INCLUDE_COREWORK_TEST_H
|
|
|
|
|
#define _INCLUDE_COREWORK_TEST_H
|
|
|
|
|
#include "skt.h"
|
|
|
|
|
#include "ipvar.h"
|
|
|
|
|
#include "sysapi.h"
|
|
|
|
|
#include "corework.h"
|
|
|
|
|
#include "user.h"
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
#define TESTCT 100000 //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>CT
|
|
|
|
|
|
|
|
|
|
using std::string;
|
|
|
|
|
|
|
|
|
|
class CProduct;
|
|
|
|
|
class CTest
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
TestMachine _data; //<2F>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
CProduct* _p; //<2F><>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
CTest();
|
|
|
|
|
~CTest(void);
|
|
|
|
|
|
|
|
|
|
cstr getAte() { return _data.ate; }
|
|
|
|
|
int getIndex() { return _index; }
|
|
|
|
|
int getSocket() { return _socket; }
|
|
|
|
|
int getStatus() { return _data.status; }
|
|
|
|
|
|
|
|
|
|
void loadCounter();
|
|
|
|
|
void saveCounter();
|
|
|
|
|
void resetCounter();
|
|
|
|
|
|
|
|
|
|
void Open(const char* pszip = 0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP
|
|
|
|
|
void Close(); //<2F>ر<EFBFBD>
|
|
|
|
|
|
|
|
|
|
void Connect(); //<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD>߳<EFBFBD>ִ<EFBFBD><D6B4>
|
|
|
|
|
void Process(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD>߳<EFBFBD>ִ<EFBFBD><D6B4>
|
|
|
|
|
void RecvMsg(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ -- <20><><EFBFBD>߳<EFBFBD>ִ<EFBFBD><D6B4>
|
|
|
|
|
|
|
|
|
|
ulong startCT() { return _startct; }
|
|
|
|
|
ulong lastCT() { return _data.lastct; }
|
|
|
|
|
bool IsReady() { return TestIdle == _data.status; }
|
|
|
|
|
bool IsRunning(){ return TestRunning == _data.status; }
|
|
|
|
|
bool Enabled() { return 1 == _data.benable; }
|
|
|
|
|
bool IsOpen() { return _skt != INVALID_SKT; }
|
|
|
|
|
bool IsConn() { return SOCKET_CONNECTED == _status; }
|
|
|
|
|
bool IsRegOk() { return 0 == _regtm; }
|
|
|
|
|
bool IsNormal() { return SOCKET_CONNECTED == _status && 0 == _regtm; } //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>η<EFBFBD><CEB7><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> -- <20><><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD>
|
|
|
|
|
void setNextNoTest() { _notest = true; }
|
|
|
|
|
bool IsNextNoTest() { return _notest; }
|
|
|
|
|
void PutProduct(CProduct* p); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ
|
|
|
|
|
|
|
|
|
|
int SetVarStatus(const char* szvar);
|
|
|
|
|
|
|
|
|
|
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD>̵߳<DFB3><CCB5><EFBFBD><EFBFBD>½ӿ<C2BD>
|
|
|
|
|
int StartTest(CProduct* p, const char* machine, const char* pszcfg, const char* pszcfg2,
|
|
|
|
|
const char* site, const char* project, int bmes, int bmtcp, int bdualmode, const char* sublotname, int bupnoise);
|
|
|
|
|
int Home();
|
|
|
|
|
int Reset();
|
|
|
|
|
int Pause(int bpause = 1);
|
|
|
|
|
int EnableGrip(int benable = 1);
|
|
|
|
|
int SendGR(const char* s);
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int getRusult() { return _result; }
|
|
|
|
|
int GetResultCsvInfo(char* pbuffer = 0, int nsize = 0);
|
|
|
|
|
int GetResultFailInfo(char* pbuffer = 0, int nsize = 0);
|
|
|
|
|
int GetResultTestInfo(char* pbuffer = 0, int nsize = 0);
|
|
|
|
|
|
|
|
|
|
void operator =(CTest &r);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
void setReply() { sys_SetEvent(_hReply); }
|
|
|
|
|
void resetReply() { sys_ResetEvent(_hReply); }
|
|
|
|
|
bool waitReply() { return 0 == sys_WaitForSingleObject(_hReply, 3000); }
|
|
|
|
|
bool IsReplyed() { return 0 == sys_WaitForSingleObject(_hReply, 0); }
|
|
|
|
|
|
|
|
|
|
void unlock() { sys_SetEvent(_hSend); }
|
|
|
|
|
bool lock() { return 0 == sys_WaitForSingleObject(_hSend, 1000); }
|
|
|
|
|
bool trylock() { return 0 == sys_WaitForSingleObject(_hSend, 0); }
|
|
|
|
|
|
|
|
|
|
void ClearFlag(); //<2F><><EFBFBD>ձ<EFBFBD>ʶ
|
|
|
|
|
void ChkRegist(); //<2F><><EFBFBD><EFBFBD>ע<EFBFBD>ᳬʱ
|
|
|
|
|
void QueryStatus(); //<2F><>ѯ<EFBFBD>ξ<EFBFBD>״̬
|
|
|
|
|
void ChkReplyTimeout(); //<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>ʱ
|
|
|
|
|
void UpdateStatus(TestStatus status); //<2F><><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD>״̬
|
|
|
|
|
int SendMsg(const char *pszFormat, ...); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
|
|
|
|
int FindEnd(char* pszmsg); //<2F><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void ParseMsg(char* pszmsg); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
void ParseRegister(char* pszcmd); //<2F><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
void ParseStatusReply(char* pszcmd); //<2F>ξ<EFBFBD>״̬<D7B4>ظ<EFBFBD>
|
|
|
|
|
void ParseStartReply(char* pszcmd); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Իظ<D4BB>
|
|
|
|
|
void ParseResultReply(char* pszcmd); //ѯ<>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ظ<EFBFBD>
|
|
|
|
|
void ParseResult(char* pszcmd); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void ParseErrorReply(char* pszcmd); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
|
|
|
|
|
void ParseIntReply(char* pszcmd); //<2F><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>
|
|
|
|
|
void ParseWriteLog(char* pszcmd); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
void ParseGR(char* pszmsg); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ӿ<EFBFBD>ָ<EFBFBD><D6B8>
|
|
|
|
|
void ParseRIO(char* pszmsg); //Զ<>̶<EFBFBD>ȡIO
|
|
|
|
|
void ParseWIO(char* pszmsg); //Զ<><D4B6>д<EFBFBD><D0B4>IO
|
|
|
|
|
void CalcRowColumn(int takeindex, char* rowcol); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
int _index; //<2F>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
int _cmdres; //ָ<><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD>
|
|
|
|
|
uint _startct; //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
uint _qstatus; //<2F><>ѯ״̬ʱ<CCAC><CAB1>
|
|
|
|
|
uint _regtm; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2s<32>ڱ<EFBFBD><DAB1><EFBFBD>ע<EFBFBD>ᣬ<EFBFBD><E1A3AC><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>
|
|
|
|
|
uint _qstart; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
Handle _hReply; //<2F><><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
Handle _hSend; //<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
|
|
|
Handle _hSection; //<2F>ٽ<EFBFBD><D9BD><EFBFBD>
|
|
|
|
|
ipvar* _pvar; //<2F><><EFBFBD><EFBFBD>״̬
|
|
|
|
|
bool _notest; //<2F><><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
int _status; //<2F><><EFBFBD><EFBFBD>״̬
|
|
|
|
|
int _socket; //socket<65><74><EFBFBD><EFBFBD>
|
|
|
|
|
int _skt; //skt<6B><74><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
int _len; //<2F><>ǰ<EFBFBD><C7B0>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|
|
|
|
int _size; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
char* _msg; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
char _client[MAX_NAME_LEN]; //<2F>ͻ<EFBFBD><CDBB><EFBFBD>ip:port
|
|
|
|
|
|
|
|
|
|
//<2F><>¼<EFBFBD><C2BC>Ϣ
|
|
|
|
|
int _result; //1ok 0ng
|
|
|
|
|
string _csvInfo;
|
|
|
|
|
string _failItems;
|
|
|
|
|
string _testItems;
|
|
|
|
|
string _csvTitle;
|
|
|
|
|
char _daypath[MAX_NAME_LEN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>ļ<EFBFBD><C4BC><EFBFBD> \\20210916
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif //<2F><>ֹ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
|