LAPTOP-SNT8I5JK\Boounion
2025-06-25 4a17d9968a0fd04d672170324a767fa8b224bd52
1.Reveive信息获取错误,已修正;
已修改2个文件
36 ■■■■ 文件已修改
SourceCode/Bond/Servo/CEquipment.cpp 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp
@@ -410,6 +410,7 @@
            onSendAble();
        }
        index += 0x40 * 2;
        for (int i = 0; i < 8; i++) {
            m_bLinkSignalToDownstream[i][SIGNAL_UPSTREAM_INLINE] = isBitOn(pszData, size, index + 0);
            m_bLinkSignalToDownstream[i][SIGNAL_UPSTREAM_TROUBLE] = isBitOn(pszData, size, index + 1);
@@ -418,7 +419,7 @@
            index += 0x40;
        }
        if (m_bLinkSignalToDownstream[0][SIGNAL_RECEIVE_ABLE]) {
            onSendAble();
            onReceiveAble();
        }
        // 其它信号及响应
@@ -1236,6 +1237,23 @@
        return nullptr;
    }
    CSlot* CEquipment::getAvailableSlotForGlassExcludeSignal(MaterialsType type)
    {
        for (int i = 0; i < SLOT_MAX; i++) {
            if (!m_slot[i].isEnable()) continue;
            if (m_slot[i].isLock()) continue;
            if (!m_slot[i].isEmpty()) continue;
            MaterialsType slotType = m_slot[i].getType();
            if (type == MaterialsType::G1 && slotType == MaterialsType::G2) continue;
            if (type == MaterialsType::G2 && slotType == MaterialsType::G1) continue;
            return &m_slot[i];
        }
        return nullptr;
    }
    CSlot* CEquipment::getAvailableSlotForGlass2(MaterialsType type, const std::vector<int>& candidates)
    {
        for (auto item : candidates) {
@@ -1679,7 +1697,7 @@
        CJobDataS* pJobDataS = pGlass->getJobDataS();
        ASSERT(pJobDataS);
        if (!compareJobData(pJobDataB, pJobDataS)) {
            LOGE("<CFliper-%s>onPreFetchedOutJob,JobData数据不匹配(JobDataB(%d, %d),JobDataS(%d, %d)), 注意排查风险!", m_strName.c_str(),
            LOGE("<CEquipemnt-%s>onPreFetchedOutJob,JobData数据不匹配(JobDataB(%d, %d),JobDataS(%d, %d)), 注意排查风险!", m_strName.c_str(),
                pJobDataB->getCassetteSequenceNo(), pJobDataB->getJobSequenceNo(),
                pJobDataS->getCassetteSequenceNo(), pJobDataS->getJobSequenceNo());
            return FALSE;
@@ -1687,10 +1705,10 @@
        // 如果没有可用位置,报错
        Lock();
        CSlot* pSlot = getAvailableSlotForGlass((MaterialsType)pJobDataS->getMaterialsType());
        CSlot* pSlot = getAvailableSlotForGlassExcludeSignal((MaterialsType)pJobDataS->getMaterialsType());
        if (pSlot == nullptr) {
            Unlock();
            LOGE("<CFliper-%s>onPreFetchedOutJob,找不到匹配的Slot,不能进料,请注意风险!", m_strName.c_str());
            LOGE("<CEquipemnt-%s>onPreFetchedOutJob,找不到匹配的Slot,不能进料,请注意风险!", m_strName.c_str());
            return FALSE;
        }
        Unlock();
@@ -1748,10 +1766,9 @@
        return 0;
    }
    int CEquipment::onRecieveAble()
    int CEquipment::onReceiveAble()
    {
        LOGI("<CEquipment-%s>onRecieveAble.", m_strName.c_str());
        LOGI("<CEquipment-%s>onReceiveAble.", m_strName.c_str());
        return 0;
    }
SourceCode/Bond/Servo/CEquipment.h
@@ -43,7 +43,7 @@
#define SIGNAL_UPSTREAM_TROUBLE    1
#define SIGNAL_INTERLOCK        2
#define SIGNAL_SEND_ABLE        3
#define SIGNAL_RECEIVE_ABLE        4
#define SIGNAL_RECEIVE_ABLE        3
    typedef std::function<void(int writeCode, int retCode)> ONWRITEDRET;
@@ -126,7 +126,7 @@
        virtual int onStoredJob(int port, CJobDataB* pJobDataB);
        virtual int onProcessData(CProcessData* pProcessData);
        virtual int onSendAble();
        virtual int onRecieveAble();
        virtual int onReceiveAble();
        virtual int onProcessStateChanged(PROCESS_STATE state);
        virtual int getIndexerOperationModeBaseValue();
        bool isAlarmStep(SERVO::CStep* pStep);
@@ -167,6 +167,7 @@
        // 获取一个指定物料类型(G1,G2,G1&G2)的空槽位
        CSlot* getAvailableSlotForGlass(MaterialsType type);
        CSlot* getAvailableSlotForGlassExcludeSignal(MaterialsType type);
        // 在指定的槽列表中,获取一个指定物料类型(G1,G2,G1&G2)的空槽位
        CSlot* getAvailableSlotForGlass2(MaterialsType type, const std::vector<int>& candidates);