From bea6407b376a4e426f0b120bae569fba6ab867db Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期六, 08 十一月 2025 17:55:47 +0800
Subject: [PATCH] 1.CMaster.cpp 第 1644/1667/1691 行在记录 SV 曲线时通过 getGlassFromSlot(0) 取玻璃,而各设备的 initSlots() 都是从 1 开始编号(例如 CBonder.cpp (line 408)、CVacuumBake.cpp (line 415) 等)。槽位 0 永远不存在,所以 pGlass 始终是 nullptr,pGlass->addSVData(...) 的分支从未执行。结果 SERVO::CGlass::m_svDatas 里没有任何曲线数据,GlassJson::ToPrettyString 生成的 pretty 字符串也就没有 sv_datas,导出 CSV 时自然读不到曲线。 同一段代码还有一个潜在 Bug:虽然判断了 channel - 1 < bonderTypes.size(),但真正索引却用的是 bonderTypes[channel]。索引偏移会导致数据类型错位,最后一个通道甚至可能越界。即使修正了槽位,这里也需要同步改成 bonderTypes[channel - 1](另外两处 vacuumbakeTypes、coolingTypes 也一样)。
---
SourceCode/Bond/BondEq/View/IOMonitoringDlg.cpp | 20 +++++++++++---------
1 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/SourceCode/Bond/BondEq/View/IOMonitoringDlg.cpp b/SourceCode/Bond/BondEq/View/IOMonitoringDlg.cpp
index d72dd77..dee2397 100644
--- a/SourceCode/Bond/BondEq/View/IOMonitoringDlg.cpp
+++ b/SourceCode/Bond/BondEq/View/IOMonitoringDlg.cpp
@@ -25,7 +25,7 @@
{
m_nCurrentPage = 1;
m_nTotalPages = 1;
- m_nRowsPerPage = 10;
+ m_nRowsPerPage = 16;
m_nCols = 6;
}
@@ -59,7 +59,7 @@
// 璁$畻椤垫暟
m_nCurrentPage = 1;
- m_nTotalPages = (m_displayData.size() + m_nRowsPerPage - 1) / m_nRowsPerPage;
+ m_nTotalPages = ((int)m_displayData.size() + m_nRowsPerPage - 1) / m_nRowsPerPage;
}
void CIOMonitoringDlg::SetPLC(CPLC* pPLC)
@@ -161,7 +161,7 @@
ScreenToClient(&nextButtonRect);
int buttonHeight = prevButtonRect.Height(); // 鎸夐挳鐨勯珮搴�
- int topMargin = rect.Height() * 0.05; // 椤堕儴淇濈暀 5% 鐨勯珮搴�
+ int topMargin = int(rect.Height() * 0.05); // 椤堕儴淇濈暀 5% 鐨勯珮搴�
int bottomMargin = buttonHeight + topMargin; // 搴曢儴淇濈暀鎸夐挳楂樺害鍔犻棿璺�
int sideMargin = topMargin; // 宸﹀彸闂磋窛涓庨《閮ㄩ棿璺濈浉鍚�
int groupSpacing = 20; // 涓ょ粍涔嬮棿鐨勯棿璺�
@@ -214,8 +214,8 @@
// 鍒涘缓鍔ㄦ�佹帶浠�
CBLLabel* pStatic = new CBLLabel();
DWORD style = WS_CHILD | WS_VISIBLE | SS_CENTERIMAGE; // 纭繚鍨傜洿灞呬腑
- if (hasBorder) {
- style |= WS_BORDER; // 娣诲姞杈规
+ if (!hasBorder) {
+ pStatic->DisableBorder();
}
pStatic->Create(text, style, CRect(x, y, x + width, y + height), this, id);
@@ -234,6 +234,8 @@
UserRole enRole = userManager.getCurrentUserRole();
if (clickCallback && (enRole == UserRole::SuperAdmin || enRole == UserRole::Operator)) {
pStatic->SetClickCallback(clickCallback);
+ pStatic->SetRoundedCorners(TRUE, 5);
+ pStatic->DisableBorder();
}
// 瀛樺偍鎺т欢鎸囬拡
@@ -490,7 +492,7 @@
MC::SOFT_COMPONENT enComponent;
if (ParsePLCAddress(CString(data.inputAddress.c_str()), enComponent, nAddress)) {
int nOffset = nAddress - inputStartAddr;
- if (nOffset >= 0 && nOffset < nDataSize) {
+ if (nOffset >= 0 && nOffset < (int)nDataSize) {
int byteIndex = nOffset / 8;
int bitIndex = nOffset % 8;
data.bInputStates = CToolUnits::getBit(pData[byteIndex], bitIndex);
@@ -511,7 +513,7 @@
MC::SOFT_COMPONENT enComponent;
if (ParsePLCAddress(CString(data.outputAddress.c_str()), enComponent, nAddress)) {
int nOffset = nAddress - outputStartAddr;
- if (nOffset >= 0 && nOffset < nDataSize) {
+ if (nOffset >= 0 && nOffset < (int)nDataSize) {
int byteIndex = nOffset / 8;
int bitIndex = nOffset % 8;
data.bOutputStates = CToolUnits::getBit(pData[byteIndex], bitIndex);
@@ -604,8 +606,8 @@
}
GetWindowRect(&dlgRect);
- int dlgWidth = dlgRect.Width() * 2;
- int dlgHeight = dlgRect.Height() * 2;
+ int dlgWidth = dlgRect.Width() * 3;
+ int dlgHeight = dlgRect.Height() * 3;
if (dlgWidth > screenRect.Width()) {
dlgWidth = screenRect.Width();
--
Gitblit v1.9.3