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

📄 dido_def.~cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 ~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 + -