LAPTOP-SNT8I5JK\Boounion
2025-09-11 71766e0946eaaf4473377a7943d6bc61da94a604
1.Glass的状态切换;
2.重新组织机器中Glass的序列化和反序列化;
已修改2个文件
29 ■■■■ 文件已修改
SourceCode/Bond/Servo/CEquipment.cpp 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEquipment.cpp
@@ -5,6 +5,7 @@
#include "CArm.h"
#include "CGlassPool.h"
#include "Servo.h"
#include "GlassJson.h"
namespace SERVO {
@@ -336,10 +337,15 @@
                m_slot[i].serialize(ar);
                CGlass* pGlass = (CGlass *)m_slot[i].getContext();
                if (pGlass != nullptr) {                    
                    pGlass->serialize(ar);
                    const std::string pretty = GlassJson::ToPrettyString(*pGlass);
                    CString strPretty = CString(pretty.c_str());
                    ar << strPretty;
                    CGlass* pBuddy = pGlass->getBuddy();
                    if (pBuddy != nullptr) {
                        pBuddy->serialize(ar);
                        const std::string prettyBuddy = GlassJson::ToPrettyString(*pBuddy);
                        CString strPrettyBuddy = CString(prettyBuddy.c_str());
                        ar << strPrettyBuddy;
                    }
                }
            }
@@ -349,15 +355,27 @@
            for (int i = 0; i < SLOT_MAX; i++) {
                m_slot[i].serialize(ar);
                if (m_slot[i].getTempContext() != nullptr) {
                    CString strPretty;
                    std::string pretty;
                    ar >> strPretty;
                    pretty = (LPTSTR)(LPCTSTR)strPretty;
                    if (!pretty.empty()) {
                    CGlass* pGlass = theApp.m_model.m_glassPool.allocaGlass();
                    pGlass->serialize(ar);
                        GlassJson::FromString(pretty, *pGlass);
                    m_slot[i].setContext(pGlass);
                    if (pGlass->getBuddy() != nullptr) {
                        if (!pGlass->getBuddyId().empty()) {
                        CGlass* pBuddy = theApp.m_model.m_glassPool.allocaGlass();
                        pBuddy->serialize(ar);
                            CString strPrettyBuddy;
                            std::string prettyBuddy;
                            ar >> strPrettyBuddy;
                            prettyBuddy = (LPTSTR)(LPCTSTR)strPrettyBuddy;
                            GlassJson::FromString(prettyBuddy, *pBuddy);
                        pGlass->forceSetBuddy(pBuddy);
                    }
                }
                }
            }
            
            // 梳理各玻璃之间的绑定关系
SourceCode/Bond/Servo/CMaster.cpp
@@ -774,6 +774,7 @@
                                continue;
                            }
                            pGlass->start();
                            pEFEM->setContext(m_pActiveRobotTask->getContext());
                            goto PORT_GET;
                        }