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

📄 tmcn_def.~cpp

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