From 66d8ca4b75006f9875731ef819dafd3d20ca01a2 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 21 七月 2025 11:15:30 +0800
Subject: [PATCH] 1.信号页面,增加下游信号的显示;
---
SourceCode/Bond/Servo/CPageLinkSignal.cpp | 92 ++++++++++++++++++++++++++++++++++++---------
1 files changed, 73 insertions(+), 19 deletions(-)
diff --git a/SourceCode/Bond/Servo/CPageLinkSignal.cpp b/SourceCode/Bond/Servo/CPageLinkSignal.cpp
index b86ca5d..8c74b16 100644
--- a/SourceCode/Bond/Servo/CPageLinkSignal.cpp
+++ b/SourceCode/Bond/Servo/CPageLinkSignal.cpp
@@ -89,10 +89,20 @@
// TODO: 鍦ㄦ澶勬坊鍔犳秷鎭鐞嗙▼搴忎唬鐮�
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
- if (m_pBtn[i][j] != nullptr) {
- m_pBtn[i][j]->DestroyWindow();
- delete m_pBtn[i][j];
- m_pBtn[i][j] = nullptr;
+ if (m_pBtnUpstream[i][j] != nullptr) {
+ m_pBtnUpstream[i][j]->DestroyWindow();
+ delete m_pBtnUpstream[i][j];
+ m_pBtnUpstream[i][j] = nullptr;
+ }
+ }
+ }
+
+ for (int i = 0; i < 8; i++) {
+ for (int j = 0; j < 4; j++) {
+ if (m_pBtnDwonstream[i][j] != nullptr) {
+ m_pBtnDwonstream[i][j]->DestroyWindow();
+ delete m_pBtnDwonstream[i][j];
+ m_pBtnDwonstream[i][j] = nullptr;
}
}
}
@@ -119,11 +129,28 @@
y = BTN_Y + (BTN_WIDTH + marginy) * row;
for (int col = 0; col < 8; col++) {
x = BTN_X + (BTN_WIDTH + marginx) * col;
- m_pBtn[row][col] = new CBlButton();
- m_pBtn[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000);
- m_pBtn[row][col]->SetFaceColor(FACECOLOR_OFF);
- m_pBtn[row][col]->SetFrameColor(RGB(28, 28, 28));
- m_pBtn[row][col]->SetTextColor(RGB(238, 238, 238));
+ m_pBtnUpstream[row][col] = new CBlButton();
+ m_pBtnUpstream[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000);
+ m_pBtnUpstream[row][col]->SetFaceColor(FACECOLOR_OFF);
+ m_pBtnUpstream[row][col]->SetFrameColor(RGB(28, 28, 28));
+ m_pBtnUpstream[row][col]->SetTextColor(RGB(238, 238, 238));
+ }
+ }
+
+ CRect rcLine;
+ GetDlgItem(IDC_LINE1)->GetWindowRect(&rcLine);
+ GetDlgItem(IDC_LINE1)->MoveWindow(BTN_Y, BTN_X + (BTN_WIDTH + marginx) * 8,
+ rcLine.Width(), rcLine.Height());
+
+ for (int row = 0; row < 8; row++) {
+ y = BTN_Y + (BTN_WIDTH + marginy) * row;
+ for (int col = 0; col < 4; col++) {
+ x = BTN_X + (BTN_WIDTH + marginx) * (col + 8);
+ m_pBtnDwonstream[row][col] = new CBlButton();
+ m_pBtnDwonstream[row][col]->Create("", WS_VISIBLE, { x, y, x + 36, y + 36 }, this, 1000);
+ m_pBtnDwonstream[row][col]->SetFaceColor(FACECOLOR_OFF);
+ m_pBtnDwonstream[row][col]->SetFrameColor(RGB(28, 28, 28));
+ m_pBtnDwonstream[row][col]->SetTextColor(RGB(238, 238, 238));
}
}
@@ -140,8 +167,9 @@
}
int idy[] = { IDC_LABEL_NAME1, IDC_LABEL_NAME2, IDC_LABEL_NAME3, IDC_LABEL_NAME4, IDC_LABEL_NAME5,
- IDC_LABEL_NAME6, IDC_LABEL_NAME7, IDC_LABEL_NAME8 };
- for (int i = 0; i < 8; i++) {
+ IDC_LABEL_NAME6, IDC_LABEL_NAME7, IDC_LABEL_NAME8, IDC_LABEL_NAME9, IDC_LABEL_NAME10,
+ IDC_LABEL_NAME11, IDC_LABEL_NAME12};
+ for (int i = 0; i < sizeof(idy) / sizeof(int); i++) {
pItem = GetDlgItem(idy[i]);
pItem->GetWindowRect(&rcItem);
pItem->MoveWindow(BTN_X + (BTN_WIDTH + marginx) * i,
@@ -162,35 +190,61 @@
{
if (nIDEvent == TIMER_ID_SIGNAL_UPDATE) {
if (m_pEquipment) {
- UpdateAllSignalStatesFromDevice();
+ UpdateAllUpstreamSignalStatesFromDevice();
+ UpdateAllDownstreamSignalStatesFromDevice();
}
}
CHMPropertyPage::OnTimer(nIDEvent);
}
-void CPageLinkSignal::UpdateAllSignalStatesFromDevice()
+void CPageLinkSignal::UpdateAllUpstreamSignalStatesFromDevice()
{
ASSERT(m_pEquipment);
for (int nRow = 0; nRow < 8; ++nRow) {
for (int nCol = 0; nCol < 8; ++nCol) {
BOOL bCurrentState = m_pEquipment->isLinkSignalUpstreamOn(nRow, nCol) && m_pEquipment->IsEnabled();
- UpdateSignalState(nRow, nCol, bCurrentState);
+ UpdateUpstreamSignalState(nRow, nCol, bCurrentState);
}
}
}
-void CPageLinkSignal::UpdateSignalState(int nRow, int nCol, bool bNewState)
+void CPageLinkSignal::UpdateAllDownstreamSignalStatesFromDevice()
{
- if (!::IsWindow(m_pBtn[nRow][nCol]->GetSafeHwnd())) {
+ ASSERT(m_pEquipment);
+
+ for (int nRow = 0; nRow < 8; ++nRow) {
+ for (int nCol = 0; nCol < 4; ++nCol) {
+ BOOL bCurrentState = m_pEquipment->isLinkSignalDownstreamOn(nRow, nCol) && m_pEquipment->IsEnabled();
+ UpdateDownstreamSignalState(nRow, nCol, bCurrentState);
+ }
+ }
+}
+
+void CPageLinkSignal::UpdateUpstreamSignalState(int nRow, int nCol, bool bNewState)
+{
+ if (!::IsWindow(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd())) {
return;
}
- bool bState = ::GetProp(m_pBtn[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1;
+ bool bState = ::GetProp(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1;
if (bState != bNewState) {
- m_pBtn[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF);
- ::SetProp(m_pBtn[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0);
+ m_pBtnUpstream[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF);
+ ::SetProp(m_pBtnUpstream[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0);
+ }
+}
+
+void CPageLinkSignal::UpdateDownstreamSignalState(int nRow, int nCol, bool bNewState)
+{
+ if (!::IsWindow(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd())) {
+ return;
+ }
+
+ bool bState = ::GetProp(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd(), _T("State")) == (void*)1;
+ if (bState != bNewState) {
+ m_pBtnDwonstream[nRow][nCol]->SetFaceColor(bNewState ? FACECOLOR_ON : FACECOLOR_OFF);
+ ::SetProp(m_pBtnDwonstream[nRow][nCol]->GetSafeHwnd(), _T("State"), bNewState ? (void*)1 : (void*)0);
}
}
--
Gitblit v1.9.3