// 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_)