From 5edb485d226790306097e40ea954efb2ed90dd21 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期一, 11 八月 2025 16:05:09 +0800
Subject: [PATCH] 1.EAP:查询CJSpace和PJSpace功能模拟,Master对EAP查询机器变量的回复;
---
SourceCode/Bond/BondEq/CProjectPageMain.cpp | 205 +++++++++++++++++++++++++++++++++++----------------
1 files changed, 141 insertions(+), 64 deletions(-)
diff --git a/SourceCode/Bond/BondEq/CProjectPageMain.cpp b/SourceCode/Bond/BondEq/CProjectPageMain.cpp
index 6ab5ce9..53f1689 100644
--- a/SourceCode/Bond/BondEq/CProjectPageMain.cpp
+++ b/SourceCode/Bond/BondEq/CProjectPageMain.cpp
@@ -22,10 +22,16 @@
m_crBkgnd = PROPAGE_BACKGROUND_COLOR;
m_hbrBkgnd = nullptr;
m_pObserver = nullptr;
+ for (int i = 0; i < BTN_MAX; i++) {
+ m_pBlBtns[i] = new CBlButton();
+ }
}
CProjectPageMain::~CProjectPageMain()
{
+ for (int i = 0; i < BTN_MAX; i++) {
+ delete m_pBlBtns[i];
+ }
}
void CProjectPageMain::SetPLC(CPLC* pPLC)
@@ -48,42 +54,43 @@
void CProjectPageMain::WriteOperationDataToPLC(OperationType eOpType, bool bPressed)
{
- MC::SOFT_COMPONENT enComponent = MC::ZR;
- int nStartAddress = 10000;
- int nEndAddress = nStartAddress + 300;
- int nSize = (nEndAddress - nStartAddress + 1) * 2;
+ if (m_pPLC == nullptr || !m_pPLC->isConnected()) {
+ return;
+ }
+
+ MC::SOFT_COMPONENT enComponent = MC::M;
+ int nStartAddress = 1000;
// 鏍规嵁鎿嶄綔绫诲瀷璁$畻鐩爣鍦板潃
- int bitIndex = 0;
char szWrite[4] = { 0x0, 0x0, 0x0, 0x0 };
switch (eOpType) {
case OperationType::RUN:
- nStartAddress += 0; // RUN 淇″彿鍦板潃 0,闂姩淇℃伅06.0
- szWrite[0] = bPressed ? 0x1 : 0;
+ nStartAddress = 1002; // RUN 淇″彿鍦板潃 M1002,闂姩淇℃伅 M1103
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::AUTO:
- nStartAddress += 01; // AUTO 淇″彿鍦板潃 c
- szWrite[1] = bPressed ? 0x10 : 0;
+ nStartAddress = 1000; // AUTO 淇″彿鍦板潃 M1000,闂姩淇℃伅 M1100
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::PUASE:
- nStartAddress += 01; // PUASE 淇″彿鍦板潃 d
- szWrite[1] = bPressed ? 0x20 : 0;
+ nStartAddress = 1004; // PUASE 淇″彿鍦板潃 M1004,闂姩淇℃伅 M1104
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::MANUAL:
- nStartAddress += 05; // MANUAL 淇″彿鍦板潃 5.e
- szWrite[1] = bPressed ? 0x40 : 0;
+ nStartAddress = 1001; // MANUAL 淇″彿鍦板潃 M1001,闂姩淇℃伅 M1100
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::MUTE:
- nStartAddress += 01; // MUTE 淇″彿鍦板潃 1.a
- szWrite[1] = bPressed ? 0x04 : 0;
+ nStartAddress = 1003; // MUTE 淇″彿鍦板潃 M1003,闂姩淇℃伅 M1003
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::OPR:
- nStartAddress += 01; // OPR 淇″彿鍦板潃 1.a
- szWrite[1] = bPressed ? 0x04 : 0;
+ nStartAddress = 1050; // OPR 淇″彿鍦板潃 M1050,闂姩淇℃伅 M1150
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
case OperationType::STOP:
- nStartAddress += 01; // STOP 淇″彿鍦板潃 1.a
- szWrite[1] = bPressed ? 0x04 : 0;
+ nStartAddress = 1114; // STOP 淇″彿鍦板潃 M1114,闂姩淇℃伅 M1114
+ szWrite[0] = bPressed ? 0x01 : 0;
break;
default:
AfxMessageBox(_T("鏈煡鎿嶄綔绫诲瀷锛�"));
@@ -99,27 +106,6 @@
TRACE("鎿嶄綔澶辫触锛氱被鍨�=%d锛屽湴鍧�=%d锛岄敊璇爜=%d\n", static_cast<int>(eOpType), nAddr, nFlag);
}
});
-}
-
-void CProjectPageMain::ReadPLCDataToUI()
-{
- MC::SOFT_COMPONENT enComponent = MC::ZR;
- int nStartAddress = 10000;
- int nEndAddress = nStartAddress + 300;
- int nSize = (nEndAddress - nStartAddress + 1) * 2;
-
- auto funOnReadData = [this, nStartAddress, nSize](IMcChannel* pChannel, int addr, char* pData, unsigned int nDataSize, int flag) -> void {
- if (nDataSize == nSize && flag == 0 && ::IsWindow(m_hWnd)) {
- dVelocityRatio = CToolUnits::toInt32(&pData[20 * 2]) * 0.001;
- dTactTime = CToolUnits::toInt32(&pData[82 * 2]) * 0.001;
- nDayShiftCapacity = CToolUnits::toInt16(&pData[84 * 2]) * 0.001;
- nNightShiftCapacity = CToolUnits::toInt16(&pData[50 * 2]) * 0.1;
-
- PostMessage(ID_MSG_UPDATA_DATA_TO_UI);
- }
- };
-
- // m_pPLC->readData(enComponent, nStartAddress, nSize, funOnReadData);
}
BEGIN_MESSAGE_MAP(CProjectPageMain, CDialogEx)
@@ -138,7 +124,6 @@
ON_MESSAGE(ID_MSG_UPDATA_DATA_TO_UI, &CProjectPageMain::OnUpdateDataToUI)
END_MESSAGE_MAP()
-
// CProjectPageMain 娑堟伅澶勭悊绋嬪簭
void CProjectPageMain::InitRxWindows()
@@ -152,9 +137,81 @@
// onNext
pAny->addRef();
int code = pAny->getCode();
- //if (true) {
-
- //}
+ if (RX_CODE_BONDER_BEEP == code) {
+ bool bMute = theApp.m_model.getBonder().isMute();
+ GetDlgItem(IDC_BUTTON_SOUND_OFF)->SetWindowText(bMute ? _T("闈欓煶") : _T("澹伴煶"));
+ }
+ else if (RX_CODE_BONDER_VELOCITY_RATIO == code) {
+ int nVelocityRatio;
+ if (pAny->getIntValue("exCode", nVelocityRatio)) {
+ CString strText;
+ strText.Format(_T("%d %s"), nVelocityRatio, _T("%"));
+ GetDlgItem(IDC_EDIT_VELOCITY_RATIO)->SetWindowText(strText);
+ }
+ }
+ else if (RX_CODE_BONDER_TACT_TIME == code) {
+ double dTactTime;
+ if (pAny->getDoubleValue("value", dTactTime)) {
+ CString strText;
+ strText.Format(_T("%.2f"), dTactTime);
+ GetDlgItem(IDC_EDIT_TACT_TIME)->SetWindowText(strText);
+ }
+ }
+ else if (RX_CODE_BONDER_DAY_SHIFT_CAPACTITY == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetDlgItemInt(IDC_EDIT_DAY_SHIFT_CAPACITY, capactity);
+ }
+ }
+ else if (RX_CODE_BONDER_NIGHT_SHIFT_CAPACTITY == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetDlgItemInt(IDC_EDIT_NIGHT_SHIFT_CAPACITY, capactity);
+ }
+ }
+ // 涓存椂娣诲姞
+ else if (RX_CODE_BONDER_STATES_BTN0 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_RUN], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN1 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_AUTO], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN2 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_PUASE], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN3 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_MANUAL], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN4 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_MUTE], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN5 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_OPR], capactity == 0);
+ }
+ }
+ else if (RX_CODE_BONDER_STATES_BTN6 == code) {
+ int capactity;
+ if (pAny->getIntValue("exCode", capactity)) {
+ SetButtonBackgroundColors(m_pBlBtns[BTN_STOP], capactity == 0);
+ }
+ }
pAny->release();
}, [&]() -> void {
// onComplete
@@ -168,12 +225,49 @@
}
}
+void CProjectPageMain::SetButtonBackgroundColors(CBlButton* btn, bool bOff)
+{
+ if (bOff) {
+ btn->SetBkgndColor(BS_NORMAL, BTN_SOUND_OFF_BKGND_NORMAL);
+ btn->SetBkgndColor(BS_HOVER, BTN_SOUND_OFF_BKGND_HOVER);
+ btn->SetBkgndColor(BS_PRESS, BTN_SOUND_OFF_BKGND_PRESS);
+ btn->Invalidate();
+ }
+ else {
+ btn->SetBkgndColor(BS_NORMAL, BTN_SOUND_ON_BKGND_NORMAL);
+ btn->SetBkgndColor(BS_HOVER, BTN_SOUND_ON_BKGND_HOVER);
+ btn->SetBkgndColor(BS_PRESS, BTN_SOUND_ON_BKGND_PRESS);
+ btn->Invalidate();
+ }
+}
+
BOOL CProjectPageMain::OnInitDialog()
{
CDialogEx::OnInitDialog();
InitRxWindows();
- SetTimer(TIMER_READ_PLC_DATA, 500, nullptr);
+
+ // 鎸夐挳鍒濆鍖�
+ m_pBlBtns[BTN_RUN]->SubclassDlgItem(IDC_BUTTON_ACTIVATE, this);
+ m_pBlBtns[BTN_AUTO]->SubclassDlgItem(IDC_BUTTON_AUTO, this);
+ m_pBlBtns[BTN_PUASE]->SubclassDlgItem(IDC_BUTTON_PUASE, this);
+ m_pBlBtns[BTN_MANUAL]->SubclassDlgItem(IDC_BUTTON_MANUAL_OPERATION, this);
+ m_pBlBtns[BTN_MUTE]->SubclassDlgItem(IDC_BUTTON_SOUND_OFF, this);
+ m_pBlBtns[BTN_OPR]->SubclassDlgItem(IDC_BUTTON_RESETTING, this);
+ m_pBlBtns[BTN_STOP]->SubclassDlgItem(IDC_BUTTON_STOP, this);
+
+ for (int i = 0; i < BTN_MAX; i++) {
+ m_pBlBtns[i]->SetFrameColor(BS_NORMAL, BTN_SOUND_OFF_FRAME_NORMAL);
+ m_pBlBtns[i]->SetFrameColor(BS_HOVER, BTN_SOUND_OFF_FRAME_HOVER);
+ m_pBlBtns[i]->SetFrameColor(BS_PRESS, BTN_SOUND_OFF_FRAME_PRESS);
+ }
+
+ // 鍒濆鍊�
+ SetDlgItemText(IDC_EDIT_VELOCITY_RATIO, _T("0 %"));
+ SetDlgItemText(IDC_EDIT_TACT_TIME, _T("0.00"));
+ SetDlgItemText(IDC_EDIT_DAY_SHIFT_CAPACITY, _T("0"));
+ SetDlgItemText(IDC_EDIT_NIGHT_SHIFT_CAPACITY, _T("0"));
+
return TRUE; // return TRUE unless you set the focus to a control
// 寮傚父: OCX 灞炴�ч〉搴旇繑鍥� FALSE
}
@@ -216,14 +310,6 @@
void CProjectPageMain::OnTimer(UINT_PTR nIDEvent)
{
- if (TIMER_READ_PLC_DATA == nIDEvent) {
- ASSERT(m_pPLC);
-
- if (m_pPLC != nullptr) {
- ReadPLCDataToUI();
- }
- }
-
CDialogEx::OnTimer(nIDEvent);
}
@@ -262,7 +348,8 @@
void CProjectPageMain::OnBnClickedButtonSoundOff()
{
// TODO: 鍦ㄦ娣诲姞鎺т欢閫氱煡澶勭悊绋嬪簭浠g爜
- HandleOperation(OperationType::MUTE);
+ bool bMute = theApp.m_model.getBonder().isMute();
+ WriteOperationDataToPLC(OperationType::MUTE, !bMute);
}
void CProjectPageMain::OnBnClickedButtonResetting()
@@ -279,15 +366,5 @@
LRESULT CProjectPageMain::OnUpdateDataToUI(WPARAM wParam, LPARAM lParam)
{
- CString strText;
- strText.Format(_T("%.3f %"), dVelocityRatio);
- GetDlgItem(IDC_EDIT_VELOCITY_RATIO)->SetWindowText(strText);
-
- strText.Format(_T("%.3f"), dTactTime);
- GetDlgItem(IDC_EDIT_TACT_TIME)->SetWindowText(strText);
-
- SetDlgItemInt(IDC_EDIT_DAY_SHIFT_CAPACITY, nDayShiftCapacity);
- SetDlgItemInt(IDC_EDIT_NIGHT_SHIFT_CAPACITY, nNightShiftCapacity);
-
return 0;
}
--
Gitblit v1.9.3