fast/Plugin/Plc/PlcMainDlg.cpp
2025-01-20 10:30:01 +08:00

713 lines
23 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// PlcDeviceDlg.cpp : ĘľĎÖÎÄźţ
//
#include "stdafx.h"
#include "PlcMainDlg.h"
#include "ModbusClient.h"
#include "afxdialogex.h"
#include "PluginPlc.h"
#include "resource.h"
#define TIMER_UPDATE_TOPLC 1
#define TIMER_UPDATE_TODLG 2
#define TIMER_RECONNECT_PLC 3
// CPlcDeviceDlg śÔť°żň
IMPLEMENT_DYNAMIC(CPlcMainDlg, CDialogEx)
CPlcMainDlg::CPlcMainDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_DEV_PLC_DLG, pParent)
{
m_pModbusClient = NULL;
m_bConnectServer = FALSE;
//m_pMainWnd = (CPluginMainDialog *)pParent;
}
CPlcMainDlg::~CPlcMainDlg()
{
}
void CPlcMainDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_IPADDRESS, m_ipAddrCtrl);
DDX_Control(pDX, IDC_BTN_OPEN_FDOOR, m_btnOpFdColor);
DDX_Control(pDX, IDC_BTN_CLOSE_FDOOR, m_btnCoFdColor);
DDX_Control(pDX, IDC_BTN_OPEN_BDOOR, m_btnOpBdColor);
DDX_Control(pDX, IDC_BTN_CLOSE_BDOOR, m_btnCoBdColor);
DDX_Control(pDX, IDC_BTN_IndoorLsta, m_btnInDLRColor);
DDX_Control(pDX, IDC_BTN_IndoorRsta, m_btnInDRRColor);
DDX_Control(pDX, IDC_BTN_OutdoorLsta, m_btnOutDLRColor);
DDX_Control(pDX, IDC_BTN_OutdoorRsta, m_btnOutDRRColor);
DDX_Control(pDX, IDC_BTN_Fsafeside, m_btnFsafeSColor);
DDX_Control(pDX, IDC_BTN_Bsafeside, m_btnBsafeSColor);
DDX_Control(pDX, IDC_BTN_Lsafeside, m_btnLsafeSColor);
DDX_Control(pDX, IDC_BTN_Rsafeside, m_btnRsafeSColor);
DDX_Control(pDX, IDC_BTN_Fradarslow, m_btnFradarSColor);
DDX_Control(pDX, IDC_BTN_Fradarstop, m_btnFradarTColor);
DDX_Control(pDX, IDC_BTN_Bradarslow, m_btnBradarSColor);
DDX_Control(pDX, IDC_BTN_Bradarstop, m_btnBradarTColor);
DDX_Control(pDX, IDC_BTN_AGVEstop, m_btnAGVEstopColor);
DDX_Control(pDX, IDC_BTN_Shiedradar, m_btnShieldRColor);
DDX_Control(pDX, IDC_BTN_Shieldsafedside, m_btnShieldSSColor);
DDX_Control(pDX, IDC_BTN_LrollerFsensor, m_btnLrollerFsenColor);
DDX_Control(pDX, IDC_BTN_LrollerMsensor, m_btnLrollerMsenColor);
DDX_Control(pDX, IDC_BTN_LrollerBsensor, m_btnLrollerBsenColor);
DDX_Control(pDX, IDC_BTN_RrollerFsensor, m_btnRrollerFsenColor);
DDX_Control(pDX, IDC_BTN_RrollerMsensor, m_btnRrollerMsenColor);
DDX_Control(pDX, IDC_BTN_RrollerBsensor, m_btnRrollerBsenColor);
DDX_Control(pDX, IDC_BTN_FDloadSte, m_btnFDloadSteColor);
DDX_Control(pDX, IDC_BTN_BDloadSte, m_btnBDloadSteColor);
DDX_Control(pDX, IDC_BTN_OpenBarrierGate, m_btnOpenBarrierGate);
DDX_Control(pDX, IDC_BTN_CloseBarrierGate, m_btnCloseBarrierGate);
DDX_Control(pDX, IDC_BTN_OpenShopRollDoor, m_btnOpenShopRollDoor);
DDX_Control(pDX, IDC_EDIT_RemoteControl, m_txRemoteControl);
}
BEGIN_MESSAGE_MAP(CPlcMainDlg, CDialogEx)
ON_BN_CLICKED(IDC_BTN_SET, &CPlcMainDlg::OnBnClickedBtnSet)
ON_BN_CLICKED(IDC_BTN_OPEN_FDOOR, &CPlcMainDlg::OnBnClickedBtnOpenFdoor)
ON_BN_CLICKED(IDC_BTN_CLOSE_FDOOR, &CPlcMainDlg::OnBnClickedBtnCloseFdoor)
ON_BN_CLICKED(IDC_BTN_OPEN_BDOOR, &CPlcMainDlg::OnBnClickedBtnOpenBdoor)
ON_BN_CLICKED(IDC_BTN_CLOSE_BDOOR, &CPlcMainDlg::OnBnClickedBtnCloseBdoor)
ON_MESSAGE(WM_NETMESSAGE, OnNetMsg)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BTN_Lroller_F, &CPlcMainDlg::OnBnClickedBtnLrollerF)
ON_BN_CLICKED(IDC_BTN_Lroller_B, &CPlcMainDlg::OnBnClickedBtnLrollerB)
ON_BN_CLICKED(IDC_BTN_Lroller_Stop, &CPlcMainDlg::OnBnClickedBtnLrollerStop)
ON_BN_CLICKED(IDC_BTN_Rroller_F, &CPlcMainDlg::OnBnClickedBtnRrollerF)
ON_BN_CLICKED(IDC_BTN_Rroller_B, &CPlcMainDlg::OnBnClickedBtnRrollerB)
ON_BN_CLICKED(IDC_BTN_Rroller_Stop, &CPlcMainDlg::OnBnClickedBtnRrollerStop)
ON_BN_CLICKED(IDC_BTN_IndoorLsta, &CPlcMainDlg::OnBnClickedBtnIndoorlsta)
ON_BN_CLICKED(IDC_BTN_IndoorRsta, &CPlcMainDlg::OnBnClickedBtnIndoorrsta)
ON_BN_CLICKED(IDC_BTN_OutdoorLsta, &CPlcMainDlg::OnBnClickedBtnOutdoorlsta)
ON_BN_CLICKED(IDC_BTN_OutdoorRsta, &CPlcMainDlg::OnBnClickedBtnOutdoorrsta)
ON_BN_CLICKED(IDC_BTN_IndoorStop, &CPlcMainDlg::OnBnClickedBtnIndoorstop)
ON_BN_CLICKED(IDC_BTN_OutdoorStop, &CPlcMainDlg::OnBnClickedBtnOutdoorstop)
ON_BN_CLICKED(IDC_BTN_Shiedradar, &CPlcMainDlg::OnBnClickedBtnShiedradar)
ON_BN_CLICKED(IDC_BTN_Shieldsafedside, &CPlcMainDlg::OnBnClickedBtnShieldsafedside)
ON_BN_CLICKED(IDC_BTN_OpenBarrierGate, &CPlcMainDlg::OnBnClickedBtnOpenbarriergate)
ON_BN_CLICKED(IDC_BTN_CloseBarrierGate, &CPlcMainDlg::OnBnClickedBtnClosebarriergate)
ON_BN_CLICKED(IDC_BTN_OpenShopRollDoor, &CPlcMainDlg::OnBnClickedBtnOpenshoprolldoor)
END_MESSAGE_MAP()
// CPlcDeviceDlg ĎűϢ´ŚŔíłĚĐň
BOOL CPlcMainDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
//śÁČĄĹäÖĂÎÄźţ
ReadConfigFromIni();
//ÁŹ˝ÓPLC
ConnectPlcController();
MfcButtonInit();
SetTimer(TIMER_UPDATE_TOPLC, 100, NULL);
SetTimer(TIMER_UPDATE_TODLG, 200, NULL);
return TRUE; // return TRUE unless you set the focus to a control
// Ň쳣: OCX ĘôĐÔŇłÓŚˇľťŘ FALSE
}
void CPlcMainDlg::MfcButtonInit()
{
m_btnOpFdColor.m_bTransparent = FALSE; //ÔĘĐí¸ÄąäŃŐÉŤ
m_btnOpFdColor.m_bDontUseWinXPTheme = TRUE;
m_btnCoFdColor.m_bTransparent = FALSE;
m_btnCoFdColor.m_bDontUseWinXPTheme = TRUE;
m_btnOpBdColor.m_bTransparent = FALSE;
m_btnOpBdColor.m_bDontUseWinXPTheme = TRUE;
m_btnCoBdColor.m_bTransparent = FALSE;
m_btnCoBdColor.m_bDontUseWinXPTheme = TRUE;
m_btnInDLRColor.m_bTransparent = FALSE;
m_btnInDLRColor.m_bDontUseWinXPTheme = TRUE;
m_btnInDRRColor.m_bTransparent = FALSE;
m_btnInDRRColor.m_bDontUseWinXPTheme = TRUE;
m_btnOutDLRColor.m_bTransparent = FALSE;
m_btnOutDLRColor.m_bDontUseWinXPTheme = TRUE;
m_btnOutDRRColor.m_bTransparent = FALSE;
m_btnOutDRRColor.m_bDontUseWinXPTheme = TRUE;
m_btnFsafeSColor.m_bTransparent = FALSE;
m_btnFsafeSColor.m_bDontUseWinXPTheme = TRUE;
m_btnBsafeSColor.m_bTransparent = FALSE;
m_btnBsafeSColor.m_bDontUseWinXPTheme = TRUE;
m_btnLsafeSColor.m_bTransparent = FALSE;
m_btnLsafeSColor.m_bDontUseWinXPTheme = TRUE;
m_btnRsafeSColor.m_bTransparent = FALSE;
m_btnRsafeSColor.m_bDontUseWinXPTheme = TRUE;
m_btnFradarSColor.m_bTransparent = FALSE;
m_btnFradarSColor.m_bDontUseWinXPTheme = TRUE;
m_btnFradarTColor.m_bTransparent = FALSE;
m_btnFradarTColor.m_bDontUseWinXPTheme = TRUE;
m_btnBradarSColor.m_bTransparent = FALSE;
m_btnBradarSColor.m_bDontUseWinXPTheme = TRUE;
m_btnBradarTColor.m_bTransparent = FALSE;
m_btnBradarTColor.m_bDontUseWinXPTheme = TRUE;
m_btnAGVEstopColor.m_bTransparent = FALSE;
m_btnAGVEstopColor.m_bDontUseWinXPTheme = TRUE;
m_btnShieldRColor.m_bTransparent = FALSE;
m_btnShieldRColor.m_bDontUseWinXPTheme = TRUE;
m_btnShieldSSColor.m_bTransparent = FALSE;
m_btnShieldSSColor.m_bDontUseWinXPTheme = TRUE;
m_btnLrollerFsenColor.m_bTransparent = FALSE;
m_btnLrollerFsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnLrollerMsenColor.m_bTransparent = FALSE;
m_btnLrollerMsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnLrollerBsenColor.m_bTransparent = FALSE;
m_btnLrollerBsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnRrollerFsenColor.m_bTransparent = FALSE;
m_btnRrollerFsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnRrollerMsenColor.m_bTransparent = FALSE;
m_btnRrollerMsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnRrollerBsenColor.m_bTransparent = FALSE;
m_btnRrollerBsenColor.m_bDontUseWinXPTheme = TRUE;
m_btnFDloadSteColor.m_bTransparent = FALSE;
m_btnFDloadSteColor.m_bDontUseWinXPTheme = TRUE;
m_btnBDloadSteColor.m_bTransparent = FALSE;
m_btnBDloadSteColor.m_bDontUseWinXPTheme = TRUE;
m_btnOpenBarrierGate.m_bTransparent = FALSE;
m_btnOpenBarrierGate.m_bDontUseWinXPTheme = TRUE;
m_btnCloseBarrierGate.m_bTransparent = FALSE;
m_btnCloseBarrierGate.m_bDontUseWinXPTheme = TRUE;
m_btnOpenShopRollDoor.m_bTransparent = FALSE;
m_btnOpenShopRollDoor.m_bDontUseWinXPTheme = TRUE;
}
LRESULT CPlcMainDlg::OnNetMsg(WPARAM wparam, LPARAM lparam)
{
switch (wparam)
{
case NET_CONNECT_OK:
{
LogOutToFile("[info] ˇţÎńĆ÷ŇŃÁŹ˝Ó");
//m_pMainWnd->InsertLog(LOG_INFO, "The PLC Device Connect!");
KillTimer(TIMER_RECONNECT_PLC);
SetTimer(TIMER_UPDATE_TOPLC, 100, NULL);
m_bConnectServer = TRUE;
//m_pMainWnd->UpdatePlcDeviceStatue(m_bConnectServer);
break;
}
case NET_DISCONNECT:
{
//::PostMessage(m_pMainWnd->m_hWnd, WM_NETMESSAGE, PLC_DISCONNECT, NULL);
//m_pThrdModbus->ExitInstance();
KillTimer(TIMER_UPDATE_TOPLC);
SetTimer(TIMER_RECONNECT_PLC, 1000, NULL);
m_bConnectServer = FALSE;
//m_pMainWnd->UpdatePlcDeviceStatue(m_bConnectServer);
//delete m_pThrdModbus;
/*m_pThrdModbus->PostThreadMessage(WM_QUIT, 0, 0);
m_pThrdModbus = NULL;
ConnectPlcController();*/
break;
}
case NET_DATA_MSG:
{
NET_PACKET* pNetPacket = (NET_PACKET*)lparam;
delete[] pNetPacket->pData;
delete pNetPacket;
break;
}
default:
break;
}
return 0;
}
void CPlcMainDlg::ReadConfigFromIni()
{
CString strIniPath = theApp.m_strModulePath + "\\config.ini";
// łőĘźťŻÉ蹸ĹäÖĂ
char acValue[32] = "";
GetPrivateProfileString("PLC", "IP", "", acValue, 32, strIniPath);
m_strIpAddr = acValue;
DWORD dwIP = inet_addr(acValue);
unsigned char *pIP = (unsigned char*)&dwIP;
m_ipAddrCtrl.SetAddress(*pIP, *(pIP + 1), *(pIP + 2), *(pIP + 3));
m_nPort = GetPrivateProfileInt("PLC", "PORT", 0, strIniPath);
CString strPort;
strPort.Format("%d", m_nPort);
GetDlgItem(IDC_EDIT_PORT)->SetWindowText(strPort);
return; // return TRUE unless you set the focus to a control
// Ň쳣: OCX ĘôĐÔŇłÓŚˇľťŘ FALSE
}
void CPlcMainDlg::OnBnClickedBtnSet()
{
CString strIniPath = theApp.m_strModulePath + "\\config.ini";
BYTE nFild[4];
m_ipAddrCtrl.GetAddress(nFild[0], nFild[1], nFild[2], nFild[3]);
CString strIpAddr;
strIpAddr.Format("%d.%d.%d.%d", nFild[0], nFild[1], nFild[2], nFild[3]);
WritePrivateProfileString("PLC", "IP", strIpAddr, strIniPath);
CString strPort;
GetDlgItem(IDC_EDIT_PORT)->GetWindowText(strPort);
WritePrivateProfileString("PLC", "PORT", strPort, strIniPath);
MessageBox("ĹäÖĂŇѸüĐÂ, ÇëÖŘĆôşËĐÄżŘÖĆĆ÷.");
}
BOOL CPlcMainDlg::ConnectPlcController()
{
m_pModbusClient = new CModbusClient(m_strIpAddr, m_nPort, this->m_hWnd);
return m_pModbusClient->CreateThread();
}
void CPlcMainDlg::OpenFdoor()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.OpFdoor = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.CoFdoor = false;
}
void CPlcMainDlg::CloseFdoor()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.CoFdoor = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.OpFdoor = false;
}
void CPlcMainDlg::OpenBdoor()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.OpBdoor = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.CoBdoor = false;
}
void CPlcMainDlg::CloseBdoor()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.CoBdoor = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.OpBdoor = false;
}
bool m = true;
void CPlcMainDlg::OnBnClickedBtnOpenFdoor()
{
OpenFdoor();
//int nResult = MessageBox("ÇëȡČĎĘǡń´ňżŞÇ°ÖĂžíÁąĂĹ", "ĚáĘž", MB_OKCANCEL | MB_ICONQUESTION);
//if (nResult == IDOK)
//{
// OpenFdoor();
//}
//else if (nResult == IDCANCEL)
//{
// // ÓĂť§ľăť÷ÁË"ČĄĎű"
//}
}
void CPlcMainDlg::OnBnClickedBtnCloseFdoor()
{
CloseFdoor();
}
void CPlcMainDlg::OnBnClickedBtnOpenBdoor()
{
OpenBdoor();
}
void CPlcMainDlg::OnBnClickedBtnCloseBdoor()
{
CloseBdoor();
}
void CPlcMainDlg::DisplayDLG()
{
if (m_stPLCTOAGVDATA.AGVstate_u.bits.FdoorOpen_ste)
m_btnOpFdColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOpFdColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.FdoorClose_ste)
m_btnCoFdColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnCoFdColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.BdoorOpen_ste)
m_btnOpBdColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOpBdColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.BdoorClose_ste)
m_btnCoBdColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnCoBdColor.SetFaceColor(RGB(255, 255, 255), true);
//×°ĐśĘäËÍĎß×´ĚŹ
if (m_stPLCTOAGVDATA.RollerState_u.bits.IndoorLRoller_ste)
m_btnInDLRColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnInDLRColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.RollerState_u.bits.IndoorRRoller_ste)
m_btnInDRRColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnInDRRColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.RollerState_u.bits.OutdoorLRoller_ste)
m_btnOutDLRColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOutDLRColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.RollerState_u.bits.OutdoorRRoller_ste)
m_btnOutDRRColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOutDRRColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Fsafeside)
m_btnFsafeSColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnFsafeSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Bsafeside)
m_btnBsafeSColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnBsafeSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Lsafeside)
m_btnLsafeSColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnLsafeSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Rsafeside)
m_btnRsafeSColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnRsafeSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Fradarslow)
m_btnFradarSColor.SetFaceColor(RGB(255, 133, 133), true);
else
m_btnFradarSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Fradarstop)
m_btnFradarTColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnFradarTColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Bradarslow)
m_btnBradarSColor.SetFaceColor(RGB(255, 133, 133), true);
else
m_btnBradarSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.Bradarstop)
m_btnBradarTColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnBradarTColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.AGVEstop)
m_btnAGVEstopColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnAGVEstopColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.RadarShield)
m_btnShieldRColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnShieldRColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.SafeState_u.bits.SafeSideShield)
m_btnShieldSSColor.SetFaceColor(RGB(255, 0, 0), true);
else
m_btnShieldSSColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.LFsensor_ste)
m_btnLrollerFsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnLrollerFsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.LMsensor_ste)
m_btnLrollerMsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnLrollerMsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.LBsensor_ste)
m_btnLrollerBsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnLrollerBsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.RFsensor_ste)
m_btnRrollerFsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnRrollerFsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.RMsensor_ste)
m_btnRrollerMsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnRrollerMsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.RBsensor_ste)
m_btnRrollerBsenColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnRrollerBsenColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.Fdoorsenor_ste)
m_btnFDloadSteColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnFDloadSteColor.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.AGVstate_u.bits.Bdoorsenor_ste)
m_btnBDloadSteColor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnBDloadSteColor.SetFaceColor(RGB(255, 255, 255), true);
if(m_stPLCTOAGVDATA.RollerState_u.bits.BarrierGateIsOpen)
m_btnOpenBarrierGate.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOpenBarrierGate.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.RollerState_u.bits.BarrierGateIsClose)
m_btnCloseBarrierGate.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnCloseBarrierGate.SetFaceColor(RGB(255, 255, 255), true);
if (m_stPLCTOAGVDATA.RollerState_u.bits.ShopRollerdoorIsOpen)
m_btnOpenShopRollDoor.SetFaceColor(RGB(135, 206, 235), true);
else
m_btnOpenShopRollDoor.SetFaceColor(RGB(255, 255, 255), true);
CString nEdit;
nEdit.Format(_T("0x%04x"), m_stPLCTOAGVDATA.RemoteControl_u.data); // %x-16˝řÖĆĎÔĘž; %d-10˝řÖĆĎÔĘž
m_txRemoteControl.SetWindowText(nEdit);
/*
if (m_stPLCTOAGVDATA.RemoteControl_u.bits.RemoteControl || m_pMainWnd->m_nAgvMode == DEBUG_MODE) //˝öÔÚŇŁżŘĆ÷ĘšÄÜÄŁĘ˝ ťňŐß DEBUDÄŁĘ˝ŁŹĎÂPLCżŘÖĆ˝çĂć˛ĹżÉÓĂ
{
m_stAGVTOPLCDATA.RunStaControl_u.bits.AUTOHandSwitch = 1;
((CButton *)GetDlgItem(IDC_BTN_OPEN_FDOOR))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OPEN_BDOOR))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_CLOSE_FDOOR))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_CLOSE_BDOOR))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Lroller_F))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Lroller_B))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Rroller_F))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Rroller_B))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Lroller_Stop))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_Rroller_Stop))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_IndoorLsta))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_IndoorRsta))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_IndoorStop))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OutdoorLsta))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OutdoorRsta))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OutdoorStop))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OpenBarrierGate))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_CloseBarrierGate))->EnableWindow(true);
((CButton *)GetDlgItem(IDC_BTN_OpenShopRollDoor))->EnableWindow(true);
}
else
{
m_stAGVTOPLCDATA.RunStaControl_u.bits.AUTOHandSwitch = 0;
((CButton *)GetDlgItem(IDC_BTN_OPEN_FDOOR))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OPEN_BDOOR))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_CLOSE_FDOOR))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_CLOSE_BDOOR))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Lroller_F))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Lroller_B))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Rroller_F))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Rroller_B))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Lroller_Stop))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_Rroller_Stop))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_IndoorLsta))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_IndoorRsta))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_IndoorStop))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OutdoorLsta))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OutdoorRsta))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OutdoorStop))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OpenBarrierGate))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_CloseBarrierGate))->EnableWindow(false);
((CButton *)GetDlgItem(IDC_BTN_OpenShopRollDoor))->EnableWindow(false);
}*/
}
void CPlcMainDlg::OnTimer(UINT_PTR nIDEvent)
{
int nRet = 0;
//¸üĐÂÉ蹸״̏
switch (nIDEvent)
{
case TIMER_UPDATE_TOPLC:
if (m_stPLCTOAGVDATA.SafeState_u.bits.AGVEstop) //źąÍŁ´Ľˇ˘
{
m_stAGVTOPLCDATA.AGVControl_u.data = 0; //łľÔŘšöͲ֚ͣĄ˘žíÁąĂĹÍŁÖšĄ˘šŘąŐɲłľĄ˘łäľçÍŁÖš
}
nRet = m_pModbusClient->WriteMultipleRegisters(40001, 4, (short *)&(m_stAGVTOPLCDATA));
if (nRet > 0)
{
m_stAGVTOPLCDATA.AGVControl_u.bits.OpFdoor = false; //ľăť÷ĐĹşĹ
m_stAGVTOPLCDATA.AGVControl_u.bits.CoFdoor = false;
m_stAGVTOPLCDATA.AGVControl_u.bits.OpBdoor = false;
m_stAGVTOPLCDATA.AGVControl_u.bits.CoBdoor = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.OpenBarrierGate = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.CloseBarrierGate = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.OpenShopRollerDoor = false;
}
nRet = m_pModbusClient->ReadMultipleRegisters(40051, 5, (short *)&(m_stPLCTOAGVDATA));
if(nRet > 0)
{
}
break;
case TIMER_UPDATE_TODLG:
DisplayDLG();
break;
case TIMER_RECONNECT_PLC:
m_pModbusClient->PostThreadMessage(WM_QUIT, 0, 0);
m_pModbusClient = NULL;
ConnectPlcController();
break;
default:
TRACE("ÎŢЧ\n");
}
CDialogEx::OnTimer(nIDEvent);
}
//×ó˛ŕšöͲ
void CPlcMainDlg::OnBnClickedBtnLrollerF()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerF = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerB = false;
}
void CPlcMainDlg::OnBnClickedBtnLrollerB()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerB = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerF = false;
}
void CPlcMainDlg::OnBnClickedBtnLrollerStop()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerB = false;
m_stAGVTOPLCDATA.AGVControl_u.bits.LRollerF = false;
}
//ÓҲŕšöͲ
void CPlcMainDlg::OnBnClickedBtnRrollerF()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerF = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerB = false;
}
void CPlcMainDlg::OnBnClickedBtnRrollerB()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerB = TRUE;
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerF = false;
}
void CPlcMainDlg::OnBnClickedBtnRrollerStop()
{
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerB = false;
m_stAGVTOPLCDATA.AGVControl_u.bits.RRollerF = false;
}
void CPlcMainDlg::OnBnClickedBtnIndoorlsta()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.IndoorLRoller = TRUE;
}
void CPlcMainDlg::OnBnClickedBtnIndoorrsta()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.IndoorRRoller = TRUE;
}
void CPlcMainDlg::OnBnClickedBtnOutdoorlsta()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.OutdoorLRoller = TRUE;
}
void CPlcMainDlg::OnBnClickedBtnOutdoorrsta()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.OutdoorRRoller = TRUE;
}
void CPlcMainDlg::OnBnClickedBtnIndoorstop()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.IndoorLRoller = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.IndoorRRoller = false;
}
void CPlcMainDlg::OnBnClickedBtnOutdoorstop()
{
m_stAGVTOPLCDATA.PLCControl_u.bits.OutdoorLRoller = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.OutdoorRRoller = false;
}
void CPlcMainDlg::OnBnClickedBtnOpenbarriergate()
{
// TODO: ÔÚ´ËĚíźÓżŘźţ֪ͨ´ŚŔíłĚĐň´úÂë
m_stAGVTOPLCDATA.PLCControl_u.bits.OpenBarrierGate = true;
m_stAGVTOPLCDATA.PLCControl_u.bits.CloseBarrierGate = false;
}
void CPlcMainDlg::OnBnClickedBtnClosebarriergate()
{
// TODO: ÔÚ´ËĚíźÓżŘźţ֪ͨ´ŚŔíłĚĐň´úÂë
m_stAGVTOPLCDATA.PLCControl_u.bits.OpenBarrierGate = false;
m_stAGVTOPLCDATA.PLCControl_u.bits.CloseBarrierGate = true;
}
void CPlcMainDlg::OnBnClickedBtnShiedradar() //ĆÁąÎŔ×´ď
{
// TODO: ÔÚ´ËĚíźÓżŘźţ֪ͨ´ŚŔíłĚĐň´úÂë
}
void CPlcMainDlg::OnBnClickedBtnShieldsafedside() //ĆÁąÎ´Ľąß
{
// TODO: ÔÚ´ËĚíźÓżŘźţ֪ͨ´ŚŔíłĚĐň´úÂë
}
void CPlcMainDlg::OnBnClickedBtnOpenshoprolldoor()
{
// TODO: ÔÚ´ËĚíźÓżŘźţ֪ͨ´ŚŔíłĚĐň´úÂë
m_stAGVTOPLCDATA.PLCControl_u.bits.OpenShopRollerDoor = true;
}