已添加2个文件
已修改7个文件
85 ■■■■ 文件已修改
SourceCode/Bond/Servo/CEFEM.cpp 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CLoadPort.cpp 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CMaster.cpp 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/PageAlarm.cpp 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/Servo.rc 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/ServoDlg.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Res/PortConfig_Gray_32.ico 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/x64/Debug/Res/PortConfig_High_32.ico 补丁 | 查看 | 原始文档 | blame | 历史
SourceCode/Bond/Servo/CEFEM.cpp
@@ -871,4 +871,17 @@
    {
        return 10000;
    }
    void CEFEM::printDebugString001()
    {
        for (int i = 0; i < 8; i++) {
            LOGI("<CEquipment-%s>%d, Signal:%s, %s, %s, %s",
                m_strName.c_str(), i,
                m_bLinkSignal[i][SIGNAL_UPSTREAM_INLINE] ? "ON" : "OFF",
                m_bLinkSignal[i][SIGNAL_UPSTREAM_TROUBLE] ? "ON" : "OFF",
                m_bLinkSignal[i][SIGNAL_INTERLOCK] ? "ON" : "OFF",
                m_bLinkSignal[i][SIGNAL_SEND_ABLE] ? "ON" : "OFF"
            );
        }
    }
}
SourceCode/Bond/Servo/CEFEM.h
@@ -42,6 +42,7 @@
        int robotCmd(ROBOT_CMD_PARAM& robotCmdParam, ONWRITED onWritedBlock = nullptr);
        int robotCmds(ROBOT_CMD_PARAM* robotCmdParam, unsigned int count, ONWRITED onWritedBlock = nullptr);
        RMDATA& getRobotMonitoringData();
        void printDebugString001();
        // 快捷封装
        int robotSendHome(int seq, ONWRITED onWritedBlock = nullptr);
SourceCode/Bond/Servo/CLoadPort.cpp
@@ -1144,16 +1144,14 @@
    {
        char szBuffer[64];
        for (const auto& slot : config.vecSlot) {
            if (!slot.isEnabled) continue;
            int nSlotIndex = slot.nSlotID - 1;
            if (nSlotIndex < 0 || nSlotIndex >= SLOT_MAX) {
                continue;
            }
            m_slot[nSlotIndex].enable();
            if (!m_slot[nSlotIndex].isEnable()) continue;
            if (!slot.isEnabled) {
                m_slot[nSlotIndex].setContext(nullptr);
                continue;
            }
            CJobDataS js;
            js.setCassetteSequenceNo(getNextCassetteSequenceNo());
SourceCode/Bond/Servo/CMaster.cpp
@@ -540,8 +540,10 @@
                // Measurement -> LoadPort
                LOGI("Arm1 %s, Arm2 %s.", rmd.armState[0] ? _T("不可用") : _T("可用"),
                    rmd.armState[1] ? _T("不可用") : _T("可用"));
                if (rmd.armState[0] || rmd.armState[1]) {
                    LOGI("Arm1 %s, Arm2 %s.", rmd.armState[0] ? _T("不可用") : _T("可用"),
                        rmd.armState[1] ? _T("不可用") : _T("可用"));
                }
                CLoadPort* pEqLoadPort[] = { pLoadPort1, pLoadPort2, pLoadPort3, pLoadPort4 };
                CEquipment* pEqTar[] = { pVacuumBake, pFliper };
                if (primaryType == MaterialsType::G2) {
SourceCode/Bond/Servo/PageAlarm.cpp
@@ -82,12 +82,52 @@
void CPageAlarm::Resize()
{
    CWnd* pItem;
    CRect rcClient;
    GetClientRect(&rcClient);
    pItem = GetDlgItem(IDC_LIST_ALARM);
    pItem->MoveWindow(12, 58, rcClient.Width() - 24, rcClient.Height() - 64);
    // ===== 常量定义 =====
    const int nLeft = 12;
    const int nRight = 12;
    const int nTop = 58;
    const int nButtonHeight = 28;
    const int nButtonMarginBottom = 12;
    const int nSpacing = 8;
    const int nButtonWidth = 80;
    const int nLabelWidth = 100;
    // ===== 分页控件布局 =====
    int yBottom = rcClient.bottom - nButtonMarginBottom - nButtonHeight;
    int xRight = rcClient.Width() - nRight;
    CWnd* pBtnNext = GetDlgItem(IDC_BUTTON_NEXT_PAGE);
    CWnd* pBtnPrev = GetDlgItem(IDC_BUTTON_PREV_PAGE);
    CWnd* pLabelPage = GetDlgItem(IDC_LABEL_PAGE_NUMBER);
    if (pBtnNext && pBtnPrev && pLabelPage) {
        // 获取分页文本宽度估算
        //CString strLabel;
        //GetDlgItemText(IDC_LABEL_PAGE_NUMBER, strLabel);
        //if (strLabel.IsEmpty()) {
        //    strLabel = _T("第 1 / 1 页");
        //}
        //int nCharWidth = 8;
        //int nLabelWidth = strLabel.GetLength() * nCharWidth + 20;
        // 设置按钮和标签位置
        pBtnNext->MoveWindow(xRight - nButtonWidth, yBottom, nButtonWidth, nButtonHeight);
        xRight -= nButtonWidth + nSpacing;
        pLabelPage->MoveWindow(xRight - nLabelWidth, yBottom, nLabelWidth, nButtonHeight);
        xRight -= nLabelWidth + nSpacing;
        pBtnPrev->MoveWindow(xRight - nButtonWidth, yBottom, nButtonWidth, nButtonHeight);
    }
    // ===== 表格区域布局 =====
    if (nullptr != m_listCtrl.m_hWnd) {
        int listHeight = yBottom - nTop - nSpacing;
        m_listCtrl.MoveWindow(nLeft, nTop, rcClient.Width() - nLeft - nRight, listHeight);
    }
}
void CPageAlarm::LoadAlarms()
@@ -114,12 +154,15 @@
{
    // 更新分页信息
    CString strPage;
    strPage.Format(_T("第 %d 页"), m_nCurPage);
    strPage.Format(_T("第 %d / %d 页"), m_nCurPage, m_nTotalPages);
    SetDlgItemText(IDC_LABEL_PAGE_NUMBER, strPage);
    // 启用/禁用翻页按钮
    GetDlgItem(IDC_BUTTON_PREV_PAGE)->EnableWindow(m_nCurPage > 1);
    GetDlgItem(IDC_BUTTON_NEXT_PAGE)->EnableWindow(m_nCurPage < m_nTotalPages);
    // 调整控件大小
    // Resize();
}
void CPageAlarm::FillDataToListCtrl(CListCtrl* pListCtrl, const std::vector<AlarmData>& vecData)
SourceCode/Bond/Servo/Servo.rc
Binary files differ
SourceCode/Bond/Servo/ServoDlg.cpp
@@ -897,6 +897,10 @@
        dlg.SetEFEM(pEFEM);
        dlg.DoModal();
    }
    else if (id == IDC_BUTTON_SETTINGS) {
        SERVO::CEFEM* pEFEM = (SERVO::CEFEM*)theApp.m_model.m_master.getEquipment(EQ_ID_EFEM);
        pEFEM->printDebugString001();
    }
    else if (id == IDC_BUTTON_OPERATOR) {
        int menuId = (int)wParam;
        SystemLogManager& logManager = SystemLogManager::getInstance();
SourceCode/Bond/x64/Debug/Res/PortConfig_Gray_32.ico
SourceCode/Bond/x64/Debug/Res/PortConfig_High_32.ico