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.
mitlib.pub/MITLIB/commdll/GPVision.h

131 lines
3.9 KiB
C

// GPVision.h: interface for the CGPVision class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GPVISION_H__4C9E405C_B8DB_4228_9B5A_6C4C0C5EC7B2__INCLUDED_)
#define AFX_GPVISION_H__4C9E405C_B8DB_4228_9B5A_6C4C0C5EC7B2__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "VisionNW.h"
#include "Utility.h"
#ifdef BUILD_COMMDLL
#define COMMDLL_DLLCLASS __declspec(dllexport)
#else
#define COMMDLL_DLLCLASS __declspec(dllimport)
#endif
#define END_TERMINATOR '\r'
#define MAX_GP_STATION 20
enum NEXT_SOT
{
REF_AUTO_CALIBRATION=2,
RESOLUTION_AUTO_CALIBRATION,
MANUAL_TEACH,
INSPECTION,
};
enum TYPE_ID
{
TYPE1 =1,
TYPE2,
TYPE3,
TYPE4,
TYPE5,
TYPE6,
TYPE7,
};
struct stGPDoubleDataResult
{
double dResult1;
double dResult2;
double dResult3;
double dResult4;
};
class CScanner;
class COMMDLL_DLLCLASS CGPVision : public CVisionNW
{
public:
// Gary 15N0v11, V1.12.01
// feature to enable/disable multiple app display. Used along with SwitchAppWindow
bool MultipleAppWindow(bool bEnable, DWORD dwTimeout = 5000);
bool SwitchAppWindow(int nStationNo, DWORD dwTimeout = 5000);
bool IsLotOpen();
bool WaitInTeach(int nStationNo, DWORD dwTimeout);
bool WaitResultReady(int nStationNo, DWORD dwTimeout);
bool WaitImageTaken(int nStationNo, DWORD dwTimeout);
bool CameraLiveCapture(int nStationNo, bool bOn = true);
bool IsTeachingValid(int nStationNo, int nTypeID);
bool GetResult(int nStationNo, CString &csResult);
CString GetReceiveData();
bool Send(CString csMsg);
bool IsConnectedToServer();
void Disconnect();
bool Connect(int nPortNo, CString csIPAddress, bool bServer = true);
// static void StaticReceiveComm(const char *cpcBuffer, int nSize);
void StaticReceiveComm(const char *cpcBuffer, int nSize);
bool SetShiftID(CString csShiftID);
bool SetNetUPH(long lNetUPH);
bool SetGrossUPH(long lGrossUPH);
bool SetMachineName(CString csName);
bool SetOperatorID(CString csOperatorID);
bool SetLotSize(long lLotSize);
bool IsTeach(int nStationNo);
bool IsRun();
bool IsAck();
bool Stop();
bool Run();
bool DataEnd();
bool DataStart();
bool SetLotNumber(CString csLotNumber);
bool SetPackageID(long lPackageID);
bool GetResult(int nStationNo, stGPDoubleDataResult &st_dResult);
bool CheckResultReady(int nStationNo);
bool CloseLot();
bool OpenLot(int nPackageID, DWORD dwTimeout = 5000);
bool CheckImageTaken(int nStationNo);
bool StartInspect(int nStationNo, int nNextSOT = 0, int nTypeID = 0);
CGPVision(CString csMutexName = _T("gp_vision_mutex"));
virtual ~CGPVision();
virtual void ReceiveComm(const char *cpcBuffer, int nSize);
HANDLE GetResultReadyHandle(int nStationNo);
HANDLE GetImageTakenHandle(int nStationNo);
// private:
protected:
bool SendCommand(CString csCommand, bool bWaitAck = false, DWORD dwTimeout = 5000);
bool GetStatus();
bool SendMsg(CString csMsg, DWORD dwTimeout, bool bWaitAck = false);
HANDLE m_hImageTaken[MAX_GP_STATION];
HANDLE m_hInTeach[MAX_GP_STATION];
CMutex m_GPVisionMutex;
HANDLE m_hAck;
HANDLE m_hStatusReady;
HANDLE m_hResultReady[MAX_GP_STATION];
HANDLE m_hTeachValidReady[MAX_GP_STATION];
stGPDoubleDataResult m_stResult[MAX_GP_STATION];
CStringArray m_csaResult;
bool m_bRunMode;
char m_cReceiveData[MAXSOCKBUF];
bool m_bTeachingValid;
bool m_bLotOpened;
char m_cRcvData[MAXSOCKBUF];
static bool m_bInitBefore;
};
#endif // !defined(AFX_GPVISION_H__4C9E405C_B8DB_4228_9B5A_6C4C0C5EC7B2__INCLUDED_)