📄 mbtcp_evc_demodlg.cpp
字号:
// MBTCP_eVC_demoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MBTCP_eVC_demo.h"
#include "MBTCP_eVC_demoDlg.h"
#include "Modbus_ARM.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMBTCP_eVC_demoDlg dialog
CMBTCP_eVC_demoDlg::CMBTCP_eVC_demoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMBTCP_eVC_demoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMBTCP_eVC_demoDlg)
m_ip = _T("");
m_port = 0;
m_rcoilfrom = 0;
m_rcoilr = _T("");
m_rcoilto = 0;
m_rregsfrom = 0;
m_rregsr = _T("");
m_rregsto = 0;
m_wcoil = 0;
m_wcoils = 0;
m_wreg = 0;
m_wregv = 0;
m_com = 0;
m_databit = 0;
m_parity = 0;
m_baud = 0;
m_stopbit = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMBTCP_eVC_demoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMBTCP_eVC_demoDlg)
DDX_Text(pDX, IDC_IP, m_ip);
DDX_Text(pDX, IDC_PORT, m_port);
DDX_Text(pDX, IDC_RCOILFROM, m_rcoilfrom);
DDX_Text(pDX, IDC_RCOILR, m_rcoilr);
DDX_Text(pDX, IDC_RCOILTO, m_rcoilto);
DDX_Text(pDX, IDC_RREGSFROM, m_rregsfrom);
DDX_Text(pDX, IDC_RREGSR, m_rregsr);
DDX_Text(pDX, IDC_RREGSTO, m_rregsto);
DDX_Text(pDX, IDC_WCOIL, m_wcoil);
DDX_Text(pDX, IDC_WCOILS, m_wcoils);
DDX_Text(pDX, IDC_WREG, m_wreg);
DDX_Text(pDX, IDC_WREGV, m_wregv);
DDX_Text(pDX, IDC_COM, m_com);
DDX_Text(pDX, IDC_DataBit, m_databit);
DDX_Text(pDX, IDC_Parity, m_parity);
DDX_Text(pDX, IDC_Baud, m_baud);
DDX_Text(pDX, IDC_StopBit, m_stopbit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMBTCP_eVC_demoDlg, CDialog)
//{{AFX_MSG_MAP(CMBTCP_eVC_demoDlg)
ON_BN_CLICKED(IDC_CREATE, OnCreate)
ON_BN_CLICKED(IDC_CLOSE, OnClose)
ON_BN_CLICKED(IDC_RCOILB, OnRcoilb)
ON_BN_CLICKED(IDC_RREGSB, OnRregsb)
ON_BN_CLICKED(IDC_WCOILB, OnWcoilb)
ON_BN_CLICKED(IDC_WREGB, OnWregb)
ON_BN_CLICKED(IDC_MBRTURADIO, OnMbrturadio)
ON_BN_CLICKED(IDC_MBTCPRADIO, OnMbtcpradio)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMBTCP_eVC_demoDlg message handlers
BOOL CMBTCP_eVC_demoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
m_check = FALSE; //For Modbus TCP
m_check2 = FALSE; //For Modbus RTU
m_which = TRUE; //Modbus RTU
m_port =502;
m_ip.Format(_T("%S"),"10.0.0.100");
m_rcoilfrom = 6;
m_rcoilto = 10;
m_rregsfrom = 16;
m_rregsto = 20;
m_wcoil = 6;
m_wcoils = 1;
m_wreg = 16;
m_wregv = 12345;
m_com = 3;
m_baud = 19200;
m_parity = 0;
m_databit = 8;
m_stopbit = 1;
((CButton*)GetDlgItem(IDC_MBRTURADIO))->SetCheck(1);
((CEdit*)GetDlgItem(IDC_IP))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_PORT))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_COM))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_Baud))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_Parity))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_DataBit))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_StopBit))->EnableWindow(1);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
void CMBTCP_eVC_demoDlg::OnCreate()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_which){
if(!MBRTUInit(m_com, 19200, 0, 8, 1, 300)){
AfxMessageBox(_T("Create Success!"));
m_check2 = TRUE;
}
else{
AfxMessageBox(_T("Create Failure!"));
m_check2 = FALSE;
}
}
else{
char temp[30];
sprintf(temp,"%S",m_ip,5000);
if(!MBTCPInit(1,temp,m_port,5000)){
AfxMessageBox(_T("Create Success!"));
m_check = TRUE;
}
else{
AfxMessageBox(_T("Create Failure!"));
m_check = FALSE;
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnClose()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_which){
if(m_check2 == FALSE){
AfxMessageBox(_T("The COM port has been closed!"));
}
else{
MBRTUClose(m_com);
m_check2 = FALSE;
}
}
else{
if(m_check == FALSE){
AfxMessageBox(_T("The socket has been closed!"));
}
else{
MBTCPClose(1);
m_check = FALSE;
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnRcoilb()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_which){
if(m_check2 == TRUE){
unsigned char iRecv[10]={0};
int rr;
rr = MBRTU_R_Coils(m_com,1, m_rcoilfrom,(m_rcoilto-m_rcoilfrom+1),iRecv,2);
if(!rr)
{
m_rcoilr.Format(_T("%d %d %d %d %d %d %d %d %d %d"),iRecv[0],iRecv[1],iRecv[2],iRecv[3],iRecv[4],iRecv[5],iRecv[6],iRecv[7],iRecv[8],iRecv[9]);
}
else
{
CString aa;
aa.Format(_T("%d"),rr);
AfxMessageBox(aa);
}
}
else{
AfxMessageBox(_T("Please create COM port first!!"));
}
}
else{
if(m_check == TRUE){
unsigned char iRecv[10]={0};
MBTCP_R_Coils(1,1,m_rcoilfrom,(m_rcoilto-m_rcoilfrom+1),iRecv,1);
m_rcoilr.Format(_T("%d %d %d %d %d %d %d %d %d %d"),iRecv[0],iRecv[1],iRecv[2],iRecv[3],iRecv[4],iRecv[5],iRecv[6],iRecv[7],iRecv[8],iRecv[9]);
}
else{
AfxMessageBox(_T("Please create socket first!!"));
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnRregsb()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_which){
if(m_check2 == TRUE){
short iRecv[10]={0};
int rr;
rr = MBRTU_R_Registers(m_com,1,m_rregsfrom,(m_rregsto-m_rregsfrom+1),iRecv,3);
if(!rr)
{
m_rregsr.Format(_T("%d %d %d %d %d %d %d %d %d %d"),iRecv[0],iRecv[1],iRecv[2],iRecv[3],iRecv[4],iRecv[5],iRecv[6],iRecv[7],iRecv[8],iRecv[9]);
}
else
{
CString aa;
aa.Format(_T("%d"),rr);
AfxMessageBox(aa);
}
}
else{
AfxMessageBox(_T("Please create COM port first!!"));
}
}
else{
if(m_check == TRUE){
short iRecv[10]={0};
MBTCP_R_Registers(1,1,m_rregsfrom,(m_rregsto-m_rregsfrom+1),iRecv,3);
m_rregsr.Format(_T("%d %d %d %d %d %d %d %d %d %d"),iRecv[0],iRecv[1],iRecv[2],iRecv[3],iRecv[4],iRecv[5],iRecv[6],iRecv[7],iRecv[8],iRecv[9]);
}
else{
AfxMessageBox(_T("Please create socket first!!"));
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnWcoilb()
{
// TODO: Add your control notification handler code here
UpdateData();
int rr;
if(m_which){
if(m_check2 == TRUE){
rr = MBRTU_W_Coil(m_com,1,m_wcoil,m_wcoils);
if(!rr)
{
AfxMessageBox(_T("Write Coil Success!!"));
}
else
{
CString aa;
aa.Format(_T("%d"),rr);
AfxMessageBox(aa);
}
}
else{
AfxMessageBox(_T("Please create COM port first!!"));
}
}
else{
if(m_check == TRUE){
MBTCP_W_Coil(1,1,m_wcoil,m_wcoils);
}
else{
AfxMessageBox(_T("Please create socket first!!"));
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnWregb()
{
// TODO: Add your control notification handler code here
UpdateData();
int rr;
if(m_which){
if(m_check2 == TRUE){
rr = MBRTU_W_Register(m_com,1,m_wreg,m_wregv);
if(!rr)
{
AfxMessageBox(_T("Write Register Success!!"));
}
else
{
CString aa;
aa.Format(_T("%d"),rr);
AfxMessageBox(aa);
}
}
else{
AfxMessageBox(_T("Please create COM port first!!"));
}
}
else{
if(m_check == TRUE){
if(MBTCP_W_Register(1,1,m_wreg,m_wregv))
AfxMessageBox(_T("Write Registry Fail"));
}
else{
AfxMessageBox(_T("Please create socket first!!"));
}
}
UpdateData(FALSE);
}
void CMBTCP_eVC_demoDlg::OnMbrturadio()
{
// TODO: Add your control notification handler code here
((CButton*)GetDlgItem(IDC_MBRTURADIO))->SetCheck(1);
((CButton*)GetDlgItem(IDC_MBTCPRADIO))->SetCheck(0);
((CEdit*)GetDlgItem(IDC_IP))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_PORT))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_COM))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_Baud))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_Parity))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_DataBit))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_StopBit))->EnableWindow(1);
m_which = TRUE;
}
void CMBTCP_eVC_demoDlg::OnMbtcpradio()
{
// TODO: Add your control notification handler code here
((CButton*)GetDlgItem(IDC_MBTCPRADIO))->SetCheck(1);
((CButton*)GetDlgItem(IDC_MBRTURADIO))->SetCheck(0);
((CEdit*)GetDlgItem(IDC_IP))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_PORT))->EnableWindow(1);
((CEdit*)GetDlgItem(IDC_COM))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_Baud))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_Parity))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_DataBit))->EnableWindow(0);
((CEdit*)GetDlgItem(IDC_StopBit))->EnableWindow(0);
m_which =FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -