You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
4.7 KiB
C

2 years ago
#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>