📄 tmcn_def.~cpp
字号:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "main.h"
#include "TMCN_Def.h"
#include "WinCONSYS.h" // common variable define
#include "STD_SUB.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TTMCNDefDlg *TMCNDefDlg;
//---------------------------------------------------------------------
__fastcall TTMCNDefDlg::TTMCNDefDlg(TComponent* AOwner)
: TForm(AOwner)
{
}
//---------------------------------------------------------------------
int __fastcall TTMCNDefDlg::Execute(int type, int idx)
{
int i, rc, bytes, bitno;
char buff[80];
m_type= type;
m_idx= idx;
if(m_type==8)
{
sprintf(buff, "Timer Preset, Modbus Address: %06d", TM_PSET_PTR+m_idx+400001);
Label1->Caption= buff;
sprintf(buff, "Timer Current, Modbus Address: %06d", TM_CURR_PTR+m_idx+400001);
Label2->Caption= buff;
sprintf(buff, "Timer Contact, Modbus Address: %06d", TM_BIT_PTR+m_idx+1);
Label3->Caption= buff;
sprintf(buff, "%d", Reg.TM_PSET[m_idx]);
MaskEdit1->Text= buff;
sprintf(buff, "%d", Reg.TM_CURR[m_idx]);
MaskEdit2->Text= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.TM_BIT[bytes], bitno);
ComboBox1->ItemIndex= rc;
Label4->Visible= true;
Label5->Visible= true;
}
else if(m_type==9)
{
sprintf(buff, "Counter Preset, Modbus Address: %06d", CN_PSET_PTR+m_idx+400001);
Label1->Caption= buff;
sprintf(buff, "Counter Current, Modbus Address: %06d", CN_CURR_PTR+m_idx+400001);
Label2->Caption= buff;
sprintf(buff, "Counter Contact, Modbus Address: %06d", CN_BIT_PTR+m_idx+1);
Label3->Caption= buff;
sprintf(buff, "%d", Reg.CN_PSET[m_idx]);
MaskEdit1->Text= buff;
sprintf(buff, "%d", Reg.CN_CURR[m_idx]);
MaskEdit2->Text= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.CN_BIT[bytes], bitno);
ComboBox1->ItemIndex= rc;
Label4->Visible= false;
Label5->Visible= false;
}
rc= ShowModal(); // display Form
if(rc==mrOk)
{
return(0);
}
return(-1);
}
//---------------------------------------------------------------------
void __fastcall TTMCNDefDlg::OKBtnClick(TObject *Sender)
{
int pset, curr, dd, rc, bytes, bitno;
int addr_1, addr_2, addr_3;
int new_pset, new_curr, new_dd;
short reg;
char buff[80];
int coil;
// get current value
if(m_type==8)
{
pset= Reg.TM_PSET[m_idx];
curr= Reg.TM_CURR[m_idx];
bytes= m_idx/8;
bitno= m_idx%8;
dd= Coil_Bit_Read(&Coil.TM_BIT[bytes], bitno);
addr_1= TM_PSET_PTR+m_idx+1;
addr_2= TM_CURR_PTR+m_idx+1;
addr_3= TM_BIT_PTR+m_idx+1;
}
else if(m_type==9)
{
pset= Reg.CN_PSET[m_idx];
curr= Reg.CN_CURR[m_idx];
bytes= m_idx/8;
bitno= m_idx%8;
dd= Coil_Bit_Read(&Coil.CN_BIT[bytes], bitno);
addr_1= CN_PSET_PTR+m_idx+1;
addr_2= CN_CURR_PTR+m_idx+1;
addr_3= CN_BIT_PTR+m_idx+1;
}
// send modbus command, when value is changed
new_pset= atoi(MaskEdit1->Text.c_str());
new_curr= atoi(MaskEdit2->Text.c_str());
new_dd= ComboBox1->ItemIndex;
if(new_pset != pset)
{
reg= new_pset;
rc= MBTCP_W_Register(SockNo, 1, addr_1, reg);
if(rc==MB_RTC_OK)
{
sprintf(buff, "Set Preset value Address=%06d, value=%d OK....", addr_1+400000, reg);
if(m_type==8) Reg.TM_PSET[m_idx]= new_pset;
else Reg.CN_PSET[m_idx]= new_pset;
}
else
sprintf(buff, "Set Preset value Address=%06d error rtc=%d !!!!!", addr_1+400000, rc);
Form1->StatusBar1->Panels->Items[2]->Text= buff;
}
if(new_curr != curr)
{
reg= new_curr;
rc= MBTCP_W_Register(SockNo, 1, addr_2, reg);
if(rc==MB_RTC_OK)
{
sprintf(buff, "Set Current value Address=%06d, value=%d OK....", addr_2+400000, reg);
if(m_type==8) Reg.TM_CURR[m_idx]= new_curr;
else Reg.CN_CURR[m_idx]= new_curr;
}
else
sprintf(buff, "Set Current value Address=%06d error rtc=%d !!!!!", addr_2+400000, rc);
Form1->StatusBar1->Panels->Items[2]->Text= buff;
}
if(new_dd != dd)
{
coil= new_dd;
rc= MBTCP_W_Coil(SockNo, 1, addr_3, coil);
if(rc==MB_RTC_OK)
{
sprintf(buff, "Set Contact Address=%06d, value=%d OK....", addr_3, coil);
}
else
sprintf(buff, "Set Contact Address=%06d error rtc=%d !!!!!", addr_3, coil);
Form1->StatusBar1->Panels->Items[2]->Text= buff;
}
}
//---------------------------------------------------------------------------
void __fastcall TTMCNDefDlg::MaskEdit1Exit(TObject *Sender)
{
int val;
val= atoi(MaskEdit1->Text.c_str());
if(check_TMCN_value(val)!=0)
{
MaskEdit1->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TTMCNDefDlg::MaskEdit2Exit(TObject *Sender)
{
int val;
val= atoi(MaskEdit2->Text.c_str());
if(check_TMCN_value(val)!=0)
{
MaskEdit2->SetFocus();
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -