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.

88 lines
1.9 KiB
C++

// Cassette.h: interface for the CCassette class.
//
//////////////////////////////////////////////////////////////////////
#pragma once
#include <vector>
#include "DllDefines.h"
#define MAX_SLOT_PER_CASSETTE 25
struct stCassette
{
int nSlotInfo[MAX_SLOT_PER_CASSETTE];
};
enum
{
NO_WAFER,
PRESENT,
CROSS_SLOT,
DOUBLE_WAFER,
WAFER_PROCESSED,
WAFER_PROCESSING,
WAFER_REJECTED,
MAX_SLOT_STATE,
ALL_SLOTS_OK = NO_WAFER,
};
enum
{
BOTTOM_UP,
TOP_DOWN,
};
class MCCTRDLLCLASS CCassette
{
public:
bool IsAllSlotsFilled();
int GetNextEmptyWaferSlot(bool bDir = BOTTOM_UP);
static int IsAnyCrossSlotorDoubleWafer(stCassette stCass, int nSlots);
int IsAnyCrossSlotOrDoubleWafer();
bool IsCassNeedProcessing();
int GetNextWaferSlot();
bool IsAllSlotsProcessed();
stCassette GetCassetteInfo();
int GetSlotStatus(int nSlotNo);
bool Init(stCassette stCass, int nNoOfSlot = MAX_SLOT_PER_CASSETTE);
CCassette();
virtual ~CCassette();
bool Init(int iNumOfSlot);
bool SetNumOfSlot(int iNumOfSlot);
bool SetSlotPitch(double dSlotPitch);
bool SetSlotStatus(int iSlotNum, int iSlotStatus);
bool SetCurSlotNum(int iSlotNum);
bool SetCurSlotStatus(int iSlotStatus);
int GetNumOfSlot();
double GetSlotPitch();
int GetCurrentSlot();
int GetNextSlotNum();
int GetNextSlot();
bool IndexToNextSlot();
void ResetSlotNum();
std::vector<int> m_iSlot;
int m_iCurSlot;
double m_dSlotPitch;
enum
{
NO_WAFER_PRESENT,
WAFER_PRESENT,
WAFER_REJECT, // due to cannot pick wafer ???
INVALID = -1, // result not valid
CURRENT_CASSETTE = 0,
NEW_CASSETTE = 1,
};
private:
bool CheckValidStatus(int nStatus);
bool CheckSlotNoValid(int nSlotNo);
stCassette m_stCassette;
int m_iNumOfSlot;
};