darker
2025-02-18 1f5df45b8e213de70e91a7ca54d6e2219cd967ca
1. 添加获取plc心跳修改状态
已修改7个文件
41 ■■■■ 文件已修改
SourceCode/Bond/Servo/CEquipment.cpp 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.h 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Common.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Model.cpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp
@@ -5,7 +5,7 @@
namespace SERVO {
    CEquipment::CEquipment()
    CEquipment::CEquipment() : m_nID(0), m_strName(""), m_strDescription(""), m_station(0, 255)
    {
        m_alive = {FALSE, 0, FALSE};
        m_listener.onAlive = {nullptr};
@@ -32,6 +32,16 @@
    }
    void CEquipment::setID(int nID)
    {
        m_nID = nID;
    }
    int CEquipment::getID()
    {
        return m_nID;
    }
    void CEquipment::setName(const char* pszName)
    {
        m_strName = pszName;
SourceCode/Bond/Servo/CEquipment.h
@@ -38,6 +38,8 @@
    public:
        virtual const char* getClassName() = 0;
        virtual void setListener(EquipmentListener listener);
        void setID(int nID);
        int getID();
        void setName(const char* pszName);
        std::string& getName();
        void setDescription(const char* pszDescription);
@@ -64,6 +66,7 @@
    protected:
        EquipmentListener m_listener;
        int m_nID;
        std::string m_strName;
        std::string m_strDescription;
        CRITICAL_SECTION m_criticalSection;
SourceCode/Bond/Servo/CMaster.cpp
@@ -63,6 +63,7 @@
        // 初始化添加各子设备
        {
            CEFEM* pEquipment = new CEFEM();
            pEquipment->setID(1);
            pEquipment->setName("EFEM(ROBOT)");
            pEquipment->setDescription("EFEM(ROBOT).");
            pEquipment->setReadBitBlock(0x4000, 0x45ff);
SourceCode/Bond/Servo/Common.h
@@ -7,6 +7,7 @@
#define RX_CODE_PASSIVE_STATUS_CHANGED    1001
#define RX_CODE_MES_MESSAGE                1002
#define RX_HSMS_TERMINAL_TEXT            1003
#define RX_CODE_EQ_ALIVE                1004
/* Channel Name */
SourceCode/Bond/Servo/Model.cpp
@@ -93,6 +93,7 @@
    masterListener.onEqAlive = [&](void* pMaster, SERVO::CEquipment* pEquipment, BOOL bAlive) -> void {
        LOGI("<CModel>Equipment onAlive:%d.\n", pEquipment->getName().c_str(),
            bAlive ? _T("ON") : _T("OFF"));
        notifyPtr(RX_CODE_EQ_ALIVE, pEquipment);
    };
    m_master.setListener(masterListener);
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -144,6 +144,21 @@
                    ShowTerminalText(pszText);
                }
            }
            else if (RX_CODE_EQ_ALIVE == code) {
                // 通知设备状态
                SERVO::CEquipment* pEquipment = nullptr;
                if (pAny->getPtrValue("ptr", (void*&)pEquipment)) {
                    if (pEquipment != nullptr) {
                        int nID = pEquipment->getID();
                        BOOL bAlive = pEquipment->isAlive();
                        if (1 == nID) {
                            DeviceStatus status = bAlive ? DeviceStatus::ONLINE : DeviceStatus::OFFLINE;
                            UpdateDeviceStatus(INDICATE_ROBOT_ARM1, status);
                            UpdateDeviceStatus(INDICATE_ROBOT_ARM2, status);
                        }
                    }
                }
            }
            pAny->release();
        }, [&]() -> void {
            // onComplete
@@ -660,12 +675,12 @@
    COLORREF newFrameColor2;
    switch (status) {
    case Online:
    case ONLINE:
        newBackgroundColor = RGB(255, 0, 0);
        newFrameColor1 = RGB(22, 22, 22);
        newFrameColor2 = RGB(255, 127, 39);
        break;
    case Offline:
    case OFFLINE:
        newBackgroundColor = RGB(0, 255, 0);
        newFrameColor1 = RGB(22, 22, 22);
        newFrameColor2 = RGB(255, 127, 39);
SourceCode/Bond/Servo/ServoDlg.h
@@ -9,8 +9,8 @@
#include "TerminalDisplayDlg.h"
enum DeviceStatus {
    Online,       // 在线
    Offline,      // 离线
    ONLINE,       // 在线
    OFFLINE,      // 离线
};
// CServoDlg 对话框