📄 dido_def.~cpp
字号:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "main.h"
#include "DIDO_Def.h"
#include "WinCONSYS.h" // common variable define
#include "STD_SUB.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TDIDODefDlg *DIDODefDlg;
//---------------------------------------------------------------------
__fastcall TDIDODefDlg::TDIDODefDlg(TComponent* AOwner)
: TForm(AOwner)
{
}
//---------------------------------------------------------------------
int __fastcall TDIDODefDlg::Execute(int type, int idx)
{
int i, rc, bytes, bitno;
char buff[80];
m_type= type;
m_idx= idx;
if(m_type==0)
{
sprintf(buff, "Input Coil, Modbus Address: %06d", DI_BARE_PTR+m_idx+100001);
Label1->Caption= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DI_BARE[bytes], bitno);
ComboBox1->ItemIndex= rc;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
ComboBox2->ItemIndex= rc;
}
else if(m_type==1)
{
sprintf(buff, "Output Coil, Modbus Address: %06d", DO_BARE_PTR+m_idx+1);
Label1->Caption= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DO_BARE[bytes], bitno);
ComboBox1->ItemIndex= rc;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
ComboBox2->ItemIndex= rc;
}
else if(m_type==4)
{
sprintf(buff, "Input Coil Soft, Modbus Address: %06d", DI_SOFT_PTR+m_idx+100001);
Label1->Caption= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DI_SOFT[bytes], bitno);
ComboBox1->ItemIndex= rc;
bytes= (m_idx+DD_MAX_BIT)/8;
bitno= (m_idx+DD_MAX_BIT)%8;
rc= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
ComboBox2->ItemIndex= rc;
}
else if(m_type==5)
{
sprintf(buff, "Output Coil Soft, Modbus Address: %06d", DO_SOFT_PTR+m_idx+1);
Label1->Caption= buff;
bytes= m_idx/8;
bitno= m_idx%8;
rc= Coil_Bit_Read(&Coil.DO_SOFT[bytes], bitno);
ComboBox1->ItemIndex= rc;
bytes= (m_idx+DD_MAX_BIT)/8;
bitno= (m_idx+DD_MAX_BIT)%8;
rc= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
ComboBox2->ItemIndex= rc;
}
rc= ShowModal(); // display Form
if(rc==mrOk)
{
return(0);
}
return(-1);
}
//---------------------------------------------------------------------
void __fastcall TDIDODefDlg::OKBtnClick(TObject *Sender)
{
int dd1, dd2, rc, bytes, bitno;
int addr_1, addr_2;
int new_dd1, new_dd2;
char buff[80];
int coil;
// get new set avleu
new_dd1= ComboBox1->ItemIndex;
new_dd2= ComboBox2->ItemIndex;
// get current value
if(m_type==0)
{
dd1= new_dd1; // Input Coil can't set from external
bytes= m_idx/8;
bitno= m_idx%8;
dd2= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
addr_2= DI_INIT_PTR+m_idx+1;
}
else if(m_type==4)
{
dd1= new_dd1; // Input Coil Soft can't set from external
bytes= (m_idx+DD_MAX_BIT)/8;
bitno= (m_idx+DD_MAX_BIT)%8;
dd2= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
addr_2= DI_INIT_PTR+DD_MAX_BIT+m_idx+1;
}
else if(m_type==1)
{
bytes= m_idx/8;
bitno= m_idx%8;
dd1= Coil_Bit_Read(&Coil.DO_BARE[bytes], bitno);
bytes= m_idx/8;
bitno= m_idx%8;
dd2= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
addr_1= DO_BARE_PTR+m_idx+1;
addr_2= DO_INIT_PTR+m_idx+1;
}
else if(m_type==5)
{
bytes= m_idx/8;
bitno= m_idx%8;
dd1= Coil_Bit_Read(&Coil.DO_SOFT[bytes], bitno);
bytes= (m_idx+DD_MAX_BIT)/8;
bitno= (m_idx+DD_MAX_BIT)%8;
dd2= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
addr_1= DO_SOFT_PTR+m_idx+1;
addr_2= DO_INIT_PTR+DD_MAX_BIT+m_idx+1;
}
// send modbus command, when value is changed
// if((m_type==0 || m_type==4) && (new_dd1!=dd1 || new_dd2!=dd2))
// {
// MessageBox(NULL, "It is not permissible to set data when the TAG is Input Coil or Input Coil Soft",
// WinCON8000, MB_OK);
// return;
// }
if(new_dd1 != dd1)
{
coil= new_dd1;
rc= MBTCP_W_Coil(SockNo, 1, addr_1, coil);
if(rc==MB_RTC_OK)
{
sprintf(buff, "Set Current Address=%06d, value=%d OK....", addr_1, coil);
}
else
sprintf(buff, "Set Current Address=%06d error rtc=%d !!!!!", addr_1, coil);
Form1->StatusBar1->Panels->Items[2]->Text= buff;
}
if(new_dd2 != dd2)
{
coil= new_dd2;
rc= MBTCP_W_Coil(SockNo, 1, addr_2, coil);
if(rc==MB_RTC_OK)
{
sprintf(buff, "Set Initial Address=%06d, value=%d OK....", addr_2, coil);
}
else
sprintf(buff, "Set Initial Address=%06d error rtc=%d !!!!!", addr_2, coil);
Form1->StatusBar1->Panels->Items[2]->Text= buff;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -