LAPTOP-SNT8I5JK\Boounion
2025-06-05 65802dfbbaf135e97a2415e3306aabfd2af49c69
1.Link Signal数据获取,解释。
已修改4个文件
46 ■■■■■ 文件已修改
SourceCode/Bond/Servo/CEquipment.cpp 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CPageGraph2.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoCommo.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp
@@ -35,6 +35,7 @@
        m_bLocalAlarm = FALSE;
        m_bAutoRecipeChange = FALSE;
        m_bVCREnable[0] = FALSE;
        memset(m_bLinkSignal, 0, sizeof(m_bLinkSignal));
        m_pCclink = nullptr;
        m_nBaseAlarmId = 0;
        m_pArm = nullptr;
@@ -363,9 +364,19 @@
        }
        */
        // 以下解释和处理数据
        // 连接信号解释和保存
        BOOL bFlag;
        int index = 0x540;
        int index = 0;
        for (int i = 0; i < 8; i++) {
            m_bLinkSignal[i][SIGNAL_UPSTREAM_INLINE] = isBitOn(pszData, size, index + 0);
            m_bLinkSignal[i][SIGNAL_UPSTREAM_TROUBLE] = isBitOn(pszData, size, index + 1);
            m_bLinkSignal[i][SIGNAL_SEND_ABLE] = isBitOn(pszData, size, index + 3);
            index += 0x40;
        }
        // 其它信号及响应
        index = 0x540;
        // alive
@@ -582,6 +593,20 @@
        return m_bVCREnable[index];
    }
    BOOL CEquipment::isLinkSignalOn(unsigned int path, unsigned int signal)
    {
        if (path >= PATH_MAX) return FALSE;
        if (signal >= SIGNAL_MAX) return FALSE;
        return m_bLinkSignal[path][signal];
    }
    void CEquipment::setLinkSignal(unsigned int path, unsigned int signal, BOOL bOn)
    {
        if (path >= PATH_MAX) return;
        if (signal >= SIGNAL_MAX) return;
        m_bLinkSignal[path][signal] = bOn;
    }
    int CEquipment::onStepEvent(CStep* pStep, int code)
    {
        if (code == STEP_EVENT_READDATA) {
SourceCode/Bond/Servo/CEquipment.h
@@ -38,7 +38,10 @@
namespace SERVO {
#define SLOT_MAX        12
#define SLOT_MAX                12
#define SIGNAL_UPSTREAM_INLINE    0
#define SIGNAL_UPSTREAM_TROUBLE    1
#define SIGNAL_SEND_ABLE        2
    typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE;
    typedef std::function<void(void* pEiuipment, int code)> ONDATACHANGED;
@@ -187,6 +190,10 @@
        BOOL isLocalAlarm();
        BOOL isAutoRecipeChange();
        BOOL isVCREnable(unsigned int index);
        BOOL isLinkSignalOn(unsigned int path, unsigned int signal);
        // 只在模拟测试时使用的函数,用于模拟信号
        void setLinkSignal(unsigned int path, unsigned int signal, BOOL bOn);
    protected:
        inline void Lock() { EnterCriticalSection(&m_criticalSection); }
@@ -231,6 +238,7 @@
        BOOL m_bLocalAlarm;
        BOOL m_bAutoRecipeChange;
        BOOL m_bVCREnable[VCR_MAX];
        BOOL m_bLinkSignal[PATH_MAX][SIGNAL_MAX];
    protected:
        CCCLinkIEControl* m_pCclink;
SourceCode/Bond/Servo/CPageGraph2.cpp
@@ -128,6 +128,11 @@
        CHMPropertyDlg dlg(pEquipment->getName().c_str(), 658, 788);
        CEquipmentPage1* pPage1 = new CEquipmentPage1();
        pPage1->setEquipment(pEquipment);
        pPage1->Create(IDD_PAGE_EQUIPMENT1);
        dlg.addPage(pPage1, "Link Signal");
        if (_strcmpi(pEquipment->getClassName(), "CLoadPort") == 0) {
            CPagePortProperty* pPageA = new CPagePortProperty();
            pPageA->setLoadPort((SERVO::CLoadPort*)pEquipment);
SourceCode/Bond/Servo/ServoCommo.h
@@ -5,6 +5,8 @@
#define BLOCK_BUFFER_MAX            1024
#define ALIVE_TIMEOUT                15
#define VCR_MAX                        1
#define PATH_MAX                    8
#define SIGNAL_MAX                    8
#define ARM_ALL                        99
    enum class PortType {