| | |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Type Change Command |
| | | static char* pszName[] = { STEP_PORT1_TYPE_CHANGE, STEP_PORT2_TYPE_CHANGE, STEP_PORT3_TYPE_CHANGE, STEP_PORT4_TYPE_CHANGE }; |
| | | static int dev[] = { 0x024, 0x02c, 0x034, 0x03c }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x100 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_TYPE_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Mode Change Command |
| | | static char* pszName[] = { STEP_PORT1_MODE_CHANGE, STEP_PORT2_MODE_CHANGE, STEP_PORT3_MODE_CHANGE, STEP_PORT4_MODE_CHANGE }; |
| | | static int dev[] = { 0x025, 0x02d, 0x035, 0x03d }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x108 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Transfer Mode Change Command |
| | | static char* pszName[] = { STEP_PORT1_TRANSFER_MODE_CHANGE, STEP_PORT2_TRANSFER_MODE_CHANGE, STEP_PORT3_TRANSFER_MODE_CHANGE, STEP_PORT4_TRANSFER_MODE_CHANGE }; |
| | | static int dev[] = { 0x028, 0x030, 0x038, 0x040 }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x110 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_TRANSFER_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Enable Mode Change Command |
| | | static char* pszName[] = { STEP_PORT1_ENABLE_MODE_CHANGE, STEP_PORT2_ENABLE_MODE_CHANGE, STEP_PORT3_ENABLE_MODE_CHANGE, STEP_PORT4_ENABLE_MODE_CHANGE }; |
| | | static int dev[] = { 0x029, 0x031, 0x039, 0x041 }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x118 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_ENABLE_MODE_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Type Auto Change Command |
| | | static char* pszName[] = { STEP_PORT1_TYPE_AUTO_CHANGE, STEP_PORT2_TYPE_AUTO_CHANGE, STEP_PORT3_TYPE_AUTO_CHANGE, STEP_PORT4_TYPE_AUTO_CHANGE }; |
| | | static int dev[] = { 0x02A, 0x032, 0x03A, 0x042 }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x120 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | // port command |
| | | // Port Cassette Type Change Command |
| | | static char* pszName[] = { STEP_PORT1_CASSETTE_TYPE_CHANGE, STEP_PORT2_CASSETTE_TYPE_CHANGE, STEP_PORT3_CASSETTE_TYPE_CHANGE, STEP_PORT4_CASSETTE_TYPE_CHANGE }; |
| | | static int dev[] = { 0x026, 0x02E, 0x036, 0x03E }; |
| | | |
| | | CEqWriteStep* pStep = new CEqWriteStep(); |
| | | pStep->setName(pszName[m_nIndex]); |
| | | pStep->setWriteSignalDev(0x128 + m_nIndex); |
| | | pStep->setDataDev(dev[m_nIndex]); |
| | | if (addStep(STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY + m_nIndex, pStep) != 0) { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | { |
| | | char* pszName[6][4] = { |
| | | {STEP_EQ_PORT1_EMPTY, STEP_EQ_PORT2_EMPTY, STEP_EQ_PORT3_EMPTY, STEP_EQ_PORT4_EMPTY}, |
| | | {STEP_EQ_PORT1_LOAD_EADY, STEP_EQ_PORT2_LOAD_EADY, STEP_EQ_PORT3_LOAD_EADY, STEP_EQ_PORT4_LOAD_EADY}, |
| | |
| | | return m_bAutoChangeEnable; |
| | | } |
| | | |
| | | int CLoadPort::getPortStatus() |
| | | { |
| | | return m_portStatusReport.getPortStatus(); |
| | | } |
| | | |
| | | int CLoadPort::getCassetteSequenceNo() |
| | | { |
| | | return m_portStatusReport.getCassetteSequenceNo(); |
| | | } |
| | | |
| | | std::string& CLoadPort::getCassetteId() |
| | | { |
| | | return m_portStatusReport.getCassetteId(); |
| | | } |
| | | |
| | | int CLoadPort::getLoadingCassetteType() |
| | | { |
| | | return m_portStatusReport.getLoadingCassetteType(); |
| | | } |
| | | |
| | | int CLoadPort::getQTimeFlag() |
| | | { |
| | | return m_portStatusReport.getQTimeFlag(); |
| | | } |
| | | |
| | | int CLoadPort::getCassetteMappingState() |
| | | { |
| | | return m_portStatusReport.getCassetteMappingState(); |
| | | } |
| | | |
| | | int CLoadPort::getCassetteStatus() |
| | | { |
| | | return m_portStatusReport.getCassetteStatus(); |
| | | } |
| | | |
| | | /* |
| | | 1: Loading Port |
| | | 2: Unloading Port |
| | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: Load Ready(Load Request) |
| | | 2: Loaded |
| | | 3: In Use (Load Complete) |
| | | 4: Unload Ready (Unload Request) |
| | | 5: Empty (Unload Complete) |
| | | 6: Blocked |
| | | */ |
| | | std::string& CLoadPort::getPortStatusDescription(int portStatus, std::string& strDescription) |
| | | { |
| | | switch (portStatus) { |
| | | case 1: |
| | | strDescription = _T("Load Ready(Load Request)"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Loaded"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("In Use(Load Complete)"); |
| | | break; |
| | | case 4: |
| | | strDescription = _T("Unload Ready(Unload Request)"); |
| | | break; |
| | | case 5: |
| | | strDescription = _T("Empty(Unload Complete)"); |
| | | break; |
| | | case 6: |
| | | strDescription = _T("Blocked"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: G1 Cassette |
| | | 2: G2 Cassette |
| | | 3: G1 + G2 Cassette |
| | | 4: Empty Cassette |
| | | * Include this item only when cassette exists" |
| | | */ |
| | | std::string& CLoadPort::getLoadingCassetteTypeDescription(int type, std::string& strDescription) |
| | | { |
| | | switch (type) { |
| | | case 1: |
| | | strDescription = _T("G1 Cassette)"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("G2 Cassette"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("G1+G2 Cassette)"); |
| | | break; |
| | | case 4: |
| | | strDescription = _T("Empty Cassette)"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: Normal Un-loading |
| | | 2: Q-Time Over & Un-loading |
| | | */ |
| | | std::string& CLoadPort::getQTimeFlagDescription(int flag, std::string& strDescription) |
| | | { |
| | | switch (flag) { |
| | | case 1: |
| | | strDescription = _T("Normal Un-loading"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Q-Time Over & Un-loading"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: mapping use |
| | | 2: mapping not use |
| | | */ |
| | | std::string& CLoadPort::getCassetteMappingStateDescription(int state, std::string& strDescription) |
| | | { |
| | | switch (state) { |
| | | case 1: |
| | | strDescription = _T("Mapping use"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Mapping not use"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | /* |
| | | 1: No Cassette Exist |
| | | 2: Waiting for Cassette Data |
| | | 3: Waiting for Start Command |
| | | 4: Waiting for Processing |
| | | 5: In Processing |
| | | 6: Process Paused |
| | | 7: Process Completed |
| | | */ |
| | | std::string& CLoadPort::getCassetteStatusDescription(int state, std::string& strDescription) |
| | | { |
| | | switch (state) { |
| | | case 1: |
| | | strDescription = _T("No Cassette Exist"); |
| | | break; |
| | | case 2: |
| | | strDescription = _T("Waiting for Cassette Data"); |
| | | break; |
| | | case 3: |
| | | strDescription = _T("Waiting for Start Command"); |
| | | break; |
| | | case 4: |
| | | strDescription = _T("Waiting for Processing"); |
| | | break; |
| | | case 5: |
| | | strDescription = _T("In Processing"); |
| | | break; |
| | | case 6: |
| | | strDescription = _T("Process Paused"); |
| | | break; |
| | | case 7: |
| | | strDescription = _T("Process Completed"); |
| | | break; |
| | | default: |
| | | strDescription = _T(""); |
| | | break; |
| | | } |
| | | |
| | | return strDescription; |
| | | } |
| | | |
| | | void CLoadPort::onReceiveLBData(const char* pszData, size_t size) |
| | | { |
| | | static int type[] = { STEP_ID_PORT1_TYPE_CHANGE, STEP_ID_PORT2_TYPE_CHANGE, |
| | |
| | | CHECK_READ_STEP_SIGNAL2(transferMode[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(enable[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(autoType[m_nIndex], pszData, size); |
| | | |
| | | |
| | | static int typeReply[] = { STEP_ID_PROT1_TYPE_CHANGE_REPLY, STEP_ID_PROT2_TYPE_CHANGE_REPLY, |
| | | STEP_ID_PROT3_TYPE_CHANGE_REPLY, STEP_ID_PROT4_TYPE_CHANGE_REPLY }; |
| | | static int modeReply[] = { STEP_ID_PROT1_MODE_CHANGE_REPLY, STEP_ID_PROT2_MODE_CHANGE_REPLY, |
| | | STEP_ID_PROT3_MODE_CHANGE_REPLY, STEP_ID_PROT4_MODE_CHANGE_REPLY }; |
| | | static int transferModeReply[] = { STEP_ID_PROT1_TRANSFER_MODE_CHANGE_REPLY, STEP_ID_PROT2_TRANSFER_MODE_CHANGE_REPLY, |
| | | STEP_ID_PROT3_TRANSFER_MODE_CHANGE_REPLY, STEP_ID_PROT4_TRANSFER_MODE_CHANGE_REPLY }; |
| | | static int enableModeReply[] = { STEP_ID_PROT1_ENABLE_MODE_CHANGE_REPLY, STEP_ID_PROT2_ENABLE_MODE_CHANGE_REPLY, |
| | | STEP_ID_PROT3_ENABLE_MODE_CHANGE_REPLY, STEP_ID_PROT4_ENABLE_MODE_CHANGE_REPLY }; |
| | | static int typeAutoReply[] = { STEP_ID_PROT1_TYPE_AUTO_CHANGE_REPLY, STEP_ID_PROT2_TYPE_AUTO_CHANGE_REPLY, |
| | | STEP_ID_PROT3_TYPE_AUTO_CHANGE_REPLY, STEP_ID_PROT4_TYPE_AUTO_CHANGE_REPLY }; |
| | | static int cassetteTypeReply[] = { STEP_ID_PROT1_CASSETTE_TYPE_CHANGE_REPLY, STEP_ID_PROT2_CASSETTE_TYPE_CHANGE_REPLY, |
| | | STEP_ID_PROT3_CASSETTE_TYPE_CHANGE_REPLY, STEP_ID_PROT4_CASSETTE_TYPE_CHANGE_REPLY }; |
| | | |
| | | CHECK_READ_STEP_SIGNAL2(typeReply[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(modeReply[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(transferModeReply[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(enableModeReply[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(typeAutoReply[m_nIndex], pszData, size); |
| | | CHECK_READ_STEP_SIGNAL2(cassetteTypeReply[m_nIndex], pszData, size); |
| | | } |
| | | |
| | | int CLoadPort::decodePortStatusReport(CStep* pStep, const char* pszData, size_t size) |
| | |
| | | return nRet; |
| | | } |
| | | |
| | | int CLoadPort::setPortType(PortType type, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TYPE_CHANGE, STEP_PORT2_TYPE_CHANGE, STEP_PORT3_TYPE_CHANGE, STEP_PORT4_TYPE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备设置Port type<%d>", m_nIndex, (int)type); |
| | | short value = (short)type; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Port type成功.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Port type失败,code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::eablePort(BOOL bEnable, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_ENABLE_MODE_CHANGE, STEP_PORT2_ENABLE_MODE_CHANGE, STEP_PORT3_ENABLE_MODE_CHANGE, STEP_PORT4_ENABLE_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备%s Port", m_nIndex, bEnable ? _T("启用") : _T("禁用")); |
| | | short value = bEnable ? 1 : 2; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>%s Port成功.", m_nIndex, bEnable ? _T("启用") : _T("禁用")); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>%s Port失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setPortMode(PortMode mode, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_MODE_CHANGE, STEP_PORT2_MODE_CHANGE, STEP_PORT3_MODE_CHANGE, STEP_PORT4_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备设置Port mode<%d>", m_nIndex, (int)mode); |
| | | short value = (short)mode; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Port mode成功.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Port mode失败,code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setCassetteType(CassetteType type, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_CASSETTE_TYPE_CHANGE, STEP_PORT2_CASSETTE_TYPE_CHANGE, STEP_PORT3_CASSETTE_TYPE_CHANGE, STEP_PORT4_CASSETTE_TYPE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备设置Cassette Type<%d>", m_nIndex, (int)type); |
| | | short value = (short)type; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Cassette Type成功.", m_nIndex); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Cassette Type失败,code:%d", m_nIndex, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::setTransferMode(TransferMode mode, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TRANSFER_MODE_CHANGE, STEP_PORT2_TRANSFER_MODE_CHANGE, STEP_PORT3_TRANSFER_MODE_CHANGE, STEP_PORT4_TRANSFER_MODE_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备设置Transfer mode<%d>", m_nIndex, (int)mode); |
| | | short value = (short)mode; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>设置Transfer mode成功.", m_nIndex + 1); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>设置Transfer mode失败,code:%d", m_nIndex + 1, code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | int CLoadPort::eableAutoChange(BOOL bEnable, ONWRITED onWritedBlock/* = nullptr*/) |
| | | { |
| | | static char* pszName[] = { STEP_PORT1_TYPE_AUTO_CHANGE, STEP_PORT2_TYPE_AUTO_CHANGE, STEP_PORT3_TYPE_AUTO_CHANGE, STEP_PORT4_TYPE_AUTO_CHANGE }; |
| | | SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(pszName[m_nIndex]); |
| | | if (pStep == nullptr) { |
| | | return -1; |
| | | } |
| | | |
| | | LOGI("<CLoadPort-%d>准备%s Auto Change", m_nIndex, bEnable ? _T("启用") : _T("禁用")); |
| | | short value = bEnable ? 1 : 2; |
| | | if (onWritedBlock != nullptr) { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), onWritedBlock); |
| | | } |
| | | else { |
| | | pStep->writeDataEx((const char*)&value, sizeof(short), [&](int code) -> int { |
| | | if (code == WOK) { |
| | | LOGI("<CLoadPort-%d>%s Auto Change成功.", m_nIndex, bEnable ? _T("启用") : _T("禁用")); |
| | | } |
| | | else { |
| | | LOGI("<CLoadPort-%d>%s Auto Change失败,code:%d", m_nIndex, bEnable ? _T("启用") : _T("禁用"), code); |
| | | } |
| | | |
| | | return 0; |
| | | }); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | /* |
| | | * 生成测试用的玻璃列表 |
| | | */ |