⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgnormaloption.cpp

📁 自己开发的
💻 CPP
字号:
// DlgNormalOption.cpp : implementation file
//

#include "stdafx.h"
#include "ModbusPLC.h"
#include "DlgNormalOption.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgNormalOption dialog

extern CModbus *g_pModbus;

CDlgNormalOption::CDlgNormalOption(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgNormalOption::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgNormalOption)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDlgNormalOption::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgNormalOption)
	DDX_Control(pDX, IDC_LIST, m_List);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgNormalOption, CDialog)
	//{{AFX_MSG_MAP(CDlgNormalOption)
	ON_BN_CLICKED(IDC_BTN_READ_BIT, OnBtnReadBit)
	ON_BN_CLICKED(IDC_BTN_WRITE_BIT, OnBtnWriteBit)
	ON_BN_CLICKED(IDC_BTN_READ_DATA, OnBtnReadData)
	ON_BN_CLICKED(IDC_BTN_WRITE_DATA, OnBtnWriteData)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgNormalOption message handlers

void CDlgNormalOption::OnBtnReadBit() 
{
	if(g_pModbus==NULL||(!g_pModbus->IsConnected()))
		return;

	unsigned short int i_regadd, i_regcount;
	unsigned char i_rtu;
	bool	  blist[256];

	i_rtu = (unsigned char)GetDlgItemInt(IDC_EDIT_PLC_ID);
	i_regadd = (unsigned short int )GetDlgItemInt(IDC_EDIT_TGT_ADDRESS);
	i_regcount  = (unsigned short int )GetDlgItemInt(IDC_EDIT_DATA_LEN);

	char state= 0;
	state = g_pModbus->MODBUS_S_ReadMultiRegM(i_rtu,i_regadd,i_regcount,blist);
	
	if(state==-1)
	{
		m_List.AddString("接收数据CRC检验失败\r\n");
	}
	else if(state==-2)
	{
		m_List.AddString("接收数据失败,无应答\r\n");
	}
	else
	{
		m_List.AddString("接收数据成功.\r\n");
	}
	
	CString strTmp;
	for(int i=0; i<i_regcount; i++)
	{			
		strTmp.Format("%d--%2x\r\n", i_regadd+i,blist[i]);							
		m_List.AddString(strTmp);
	}

}

void CDlgNormalOption::OnBtnWriteBit() 
{
	if(g_pModbus==NULL||(!g_pModbus->IsConnected()))
		return;

	unsigned short int i_regadd;
	unsigned char i_rtu;
	short int i_regvalue;
	i_rtu = (unsigned char)GetDlgItemInt(IDC_EDIT_PLC_ID);
	i_regadd = (unsigned short int )GetDlgItemInt(IDC_EDIT_TGT_ADDRESS);
	i_regvalue  = (unsigned short int )GetDlgItemInt(IDC_EDIT_DATA);

	char state= 0;
	if(i_regvalue > 0)
		state= g_pModbus->MODBUS_S_WriteSingRegM(i_rtu,i_regadd,true);
	else
		state= g_pModbus->MODBUS_S_WriteSingRegM(i_rtu,i_regadd,false);
		

	if(state>0)
		m_List.AddString("接收数据成功.\r\n");
	else 
		m_List.AddString("接收数据失败");
}

void CDlgNormalOption::OnBtnReadData() 
{
	if(g_pModbus==NULL||(!g_pModbus->IsConnected()))
		return;
	
	unsigned short int i_regadd, i_regcount;
	unsigned char i_rtu;
	short int ilist[256];

	i_rtu = (unsigned char)GetDlgItemInt(IDC_EDIT_PLC_ID);
	i_regadd = (unsigned short int )GetDlgItemInt(IDC_EDIT_TGT_ADDRESS);
	i_regcount  = (unsigned short int )GetDlgItemInt(IDC_EDIT_DATA_LEN);

	char state= 0;
	state = g_pModbus->MODBUS_S_ReadMultiRegD(i_rtu,i_regadd,i_regcount,ilist);
	
	if(state==-1)
	{
		m_List.AddString("接收数据CRC检验失败\r\n");
	}
	else if(state==-2)
	{
		m_List.AddString("接收数据失败,无应答\r\n");
	}
	else
	{
		m_List.AddString("接收数据成功.\r\n");
	}
	
	CString strTmp;
	for(int i=0; i<i_regcount; i++)
	{			
		strTmp.Format("%d--%d\r\n", i_regadd+i,ilist[i]);	
		m_List.AddString(strTmp);
	}	
}

void CDlgNormalOption::OnBtnWriteData() 
{
	if(g_pModbus==NULL||(!g_pModbus->IsConnected()))
		return;
	
	unsigned short int i_regadd;
	unsigned char i_rtu;
	short int i_regvalue;
	i_rtu = (unsigned char)GetDlgItemInt(IDC_EDIT_PLC_ID);
	i_regadd = (unsigned short int )GetDlgItemInt(IDC_EDIT_TGT_ADDRESS);
	i_regvalue  = (unsigned short int )GetDlgItemInt(IDC_EDIT_DATA);

	char state= 0;
	state= g_pModbus->MODBUS_S_WriteSingRegD(i_rtu,i_regadd,i_regvalue);
		

	if(state>0)
		m_List.AddString("接收数据成功.\r\n");
	else 
		m_List.AddString("接收数据失败");	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -