713 lines
23 KiB
C++
713 lines
23 KiB
C++
// 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;
|
||
}
|