| | |
| | | m_bLocalAlarm = FALSE; |
| | | m_bAutoRecipeChange = FALSE; |
| | | m_bVCREnable[0] = FALSE; |
| | | m_pCclink = nullptr; |
| | | m_nBaseAlarmId = 0; |
| | | InitializeCriticalSection(&m_criticalSection); |
| | | } |
| | | |
| | | CEquipment::~CEquipment() |
| | | { |
| | | for (auto item : m_mapStep) { |
| | | delete item.second; |
| | | } |
| | | m_mapStep.clear(); |
| | | |
| | | DeleteCriticalSection(&m_criticalSection); |
| | | } |
| | | |
| | |
| | | { |
| | | m_listener.onAlive = listener.onAlive; |
| | | m_listener.onCimStateChanged = listener.onCimStateChanged; |
| | | } |
| | | |
| | | void CEquipment::setCcLink(CCCLinkIEControl* pCcLink) |
| | | { |
| | | m_pCclink = pCcLink; |
| | | } |
| | | |
| | | void CEquipment::setBaseAlarmId(int nBaseId) |
| | | { |
| | | m_nBaseAlarmId = nBaseId; |
| | | } |
| | | |
| | | int CEquipment::getBaseAlarmId() |
| | | { |
| | | return m_nBaseAlarmId; |
| | | } |
| | | |
| | | void CEquipment::getProperties(std::vector<std::pair<std::string, std::string>>& container) |
| | |
| | | container.push_back(std::make_pair("Version", "1.0")); |
| | | } |
| | | |
| | | std::map<unsigned int, CStep*>& CEquipment::getSteps() |
| | | { |
| | | return m_mapStep; |
| | | } |
| | | |
| | | CStep* CEquipment::getStep(unsigned int addr) |
| | | { |
| | | auto iter = m_mapStep.find(addr); |
| | | if (iter == m_mapStep.end()) return nullptr; |
| | | return iter->second; |
| | | } |
| | | |
| | | int CEquipment::addStep(unsigned int addr, CStep* pStep) |
| | | { |
| | | auto iter = m_mapStep.find(addr); |
| | | if (iter != m_mapStep.end()) return -1; |
| | | pStep->setEquipment(this); |
| | | pStep->setCcLink(m_pCclink); |
| | | m_mapStep[addr] = pStep; |
| | | return 0; |
| | | } |
| | | |
| | | void CEquipment::init() |
| | | { |
| | | |
| | | for (auto item : m_mapStep) { |
| | | item.second->init(); |
| | | } |
| | | } |
| | | |
| | | void CEquipment::term() |
| | | { |
| | | |
| | | for (auto item : m_mapStep) { |
| | | item.second->term(); |
| | | } |
| | | } |
| | | |
| | | void CEquipment::setID(int nID) |
| | |
| | | |
| | | void CEquipment::setReadBitBlock(unsigned int start, unsigned int end) |
| | | { |
| | | m_blockReadBit.type = (unsigned int)DeviceType::LB;; |
| | | m_blockReadBit.type = (unsigned int)DeviceType::B; |
| | | m_blockReadBit.start = start; |
| | | m_blockReadBit.end = end; |
| | | m_blockReadBit.size = (m_blockReadBit.end - m_blockReadBit.start + 1) / 8; |
| | |
| | | |
| | | void CEquipment::onReceiveLBData(const char* pszData, size_t size) |
| | | { |
| | | /* |
| | | TRACE("%s onReceiveLBData: %d bytes\n", m_strName.c_str(), size); |
| | | for (unsigned int i = 0; i < size; i++) { |
| | | if (pszData[i] != 0) |
| | | TRACE("%d[%x]\n", i, pszData[i]); |
| | | } |
| | | |
| | | */ |
| | | |
| | | // 以下解释和处理数据 |
| | | BOOL bFlag; |
| | |
| | | if (!equalBool(m_bVCREnable[0], bFlag)) { |
| | | m_bVCREnable[0] = bFlag; |
| | | } |
| | | |
| | | |
| | | // 以下根据信号做流程处理 |
| | | CStep* pStep; |
| | | |
| | | // Equipment Mode Change Report(0x360) |
| | | // Equipment Status Change Report(0x361) |
| | | // Equipment Alarm Change Report(0x362 ~ 0x366) |
| | | for (int i = 0; i < 7; i++) { |
| | | index = 0x360 + i;; |
| | | bFlag = isBitOn(pszData, size, index); |
| | | pStep = getStep(index); |
| | | if (pStep != nullptr) { |
| | | ((CReadStep*)pStep)->onReadSignal(bFlag); |
| | | } |
| | | } |
| | | |
| | | index = 0x350; |
| | | bFlag = isBitOn(pszData, size, index); |
| | | pStep = getStep(index); |
| | | if (pStep != nullptr) { |
| | | ((CWriteStep*)pStep)->onRecvSignal(bFlag); |
| | | } |
| | | } |
| | | |
| | | BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index) |