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

📄 aiao_def.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
字号:
//---------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>

#include "main.h"
#include "AIAO_Def.h"
#include "WinCONSYS.h"   // common variable define
#include "STD_SUB.h"
#include "TAGDef.h"
//---------------------------------------------------------------------
#pragma resource "*.dfm"
TAIAODefDlg *AIAODefDlg;
//---------------------------------------------------------------------
__fastcall TAIAODefDlg::TAIAODefDlg(TComponent* AOwner)
	: TForm(AOwner)
{
}
//---------------------------------------------------------------------
int __fastcall TAIAODefDlg::Execute(int type, int idx)
{
  int i, rc, addr_1;
  char buff[80];

  m_type= type;
  m_idx= idx;
  ExitFlag= 0;

if(m_type==2)
{
  sprintf(buff, "Input Register, Modbus Address: %d", AI_BARE_PTR*2+m_idx*2+300001);
  Label1->Caption= buff;

  Edit1->Visible= true;
  Edit2->Visible= true;
  Edit3->Visible= true;
  Edit4->Visible= true;
  Edit5->Visible= true;
  Label2->Visible= true;
  Label3->Visible= true;
  Label4->Visible= true;
  Label5->Visible= true;
  Label6->Visible= true;
  Label14->Visible= true;
  // it Current value
  Edit6->Visible= false;
  Label7->Visible= false;

  sprintf(buff, "%10g", Reg_Def.AI_RH[m_idx]);
  Edit1->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_RL[m_idx]);
  Edit2->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_BH[m_idx]);
  Edit3->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_BL[m_idx]);
  Edit4->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AI_FL[m_idx]);
  Edit5->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_ENG[m_idx]);
  Edit6->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_HH[m_idx]);
  Edit7->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_H[m_idx]);
  Edit8->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_L[m_idx]);
  Edit9->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_LL[m_idx]);
  Edit10->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AI_DEAD[m_idx]);
  Edit11->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_INIT[m_idx]);
  Edit12->Text= buff;
}
else if(m_type==3)
{
  sprintf(buff, "Holding Register, Modbus Address: %d", AO_BARE_PTR*2+m_idx*2+400001);
  Label1->Caption= buff;

  Edit1->Visible= true;
  Edit2->Visible= true;
  Edit3->Visible= true;
  Edit4->Visible= true;
  Edit5->Visible= true;
  Label2->Visible= true;
  Label3->Visible= true;
  Label4->Visible= true;
  Label5->Visible= true;
  Label6->Visible= true;
  Label14->Visible= true;
  // it Current value
  Edit6->Visible= false;
  Label7->Visible= false;

  sprintf(buff, "%10g", Reg_Def.AO_RH[m_idx]);
  Edit1->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_RL[m_idx]);
  Edit2->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_BH[m_idx]);
  Edit3->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_BL[m_idx]);
  Edit4->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AO_FL[m_idx]);
  Edit5->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_ENG[m_idx]);
  Edit6->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_HH[m_idx]);
  Edit7->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_H[m_idx]);
  Edit8->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_L[m_idx]);
  Edit9->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_LL[m_idx]);
  Edit10->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AO_DEAD[m_idx]);
  Edit11->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_INIT[m_idx]);
  Edit12->Text= buff;
}
else if(m_type==6)
{
  addr_1= m_idx + ED_MAX;
  sprintf(buff, "Input Register Soft, Modbus Address: %d", AI_SOFT_PTR*2+m_idx*2+300001);
  Label1->Caption= buff;

  Edit1->Visible= false;
  Edit2->Visible= false;
  Edit3->Visible= false;
  Edit4->Visible= false;
  Edit5->Visible= false;
  Label2->Visible= false;
  Label3->Visible= false;
  Label4->Visible= false;
  Label5->Visible= false;
  Label6->Visible= false;
  Label14->Visible= false;
  // it Current value
  Edit6->Visible= false;
  Label7->Visible= false;

  Edit1->Text= "0";
  Edit2->Text= "0";
  Edit3->Text= "0";
  Edit4->Text= "0";
  Edit5->Text= "0";

  sprintf(buff, "%10g", Reg_Def.AI_SOFT[m_idx]);
  Edit6->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_HH[addr_1]);
  Edit7->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_H[addr_1]);
  Edit8->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_L[addr_1]);
  Edit9->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_LL[addr_1]);
  Edit10->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AI_DEAD[addr_1]);
  Edit11->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AI_INIT[addr_1]);
  Edit12->Text= buff;
}
else if(m_type==7)
{
  addr_1= m_idx + ED_MAX;
  sprintf(buff, "Holding Register Soft, Modbus Address: %d", AO_SOFT_PTR*2+m_idx*2+400001);
  Label1->Caption= buff;

  Edit1->Visible= false;
  Edit2->Visible= false;
  Edit3->Visible= false;
  Edit4->Visible= false;
  Edit5->Visible= false;
  Label2->Visible= false;
  Label3->Visible= false;
  Label4->Visible= false;
  Label5->Visible= false;
  Label6->Visible= false;
  Label14->Visible= false;
  // it Current value
  Edit6->Visible= false;
  Label7->Visible= false;

  Edit1->Text= "0";
  Edit2->Text= "0";
  Edit3->Text= "0";
  Edit4->Text= "0";
  Edit5->Text= "0";

  sprintf(buff, "%10g", Reg_Def.AO_SOFT[m_idx]);
  Edit6->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_HH[addr_1]);
  Edit7->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_H[addr_1]);
  Edit8->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_L[addr_1]);
  Edit9->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_LL[addr_1]);
  Edit10->Text= buff;
  sprintf(buff, "%5.3f", Reg_Def.AO_DEAD[addr_1]);
  Edit11->Text= buff;
  sprintf(buff, "%10g", Reg_Def.AO_INIT[addr_1]);
  Edit12->Text= buff;
}

  rc= ShowModal();        // display Form
  if(rc==mrOk)
   {
    return(0);
   }
  return(-1);
}
//---------------------------------------------------------------------------
void __fastcall TAIAODefDlg::FormClose(TObject *Sender, TCloseAction &Action)
{
  if(ExitFlag == 1) Action= caNone;
  ExitFlag= 0;
}
//---------------------------------------------------------------------
void __fastcall TAIAODefDlg::OKBtnClick(TObject *Sender)
{
  int addr_1;
  float new_val[12];

  if(check_data()!=0)
   { ExitFlag=1;  return; }

  // get current value
  new_val[0]= atof(Edit1->Text.c_str());
  new_val[1]= atof(Edit2->Text.c_str());
  new_val[2]= atof(Edit3->Text.c_str());
  new_val[3]= atof(Edit4->Text.c_str());
  new_val[4]= atof(Edit5->Text.c_str());
  new_val[5]= atof(Edit6->Text.c_str());
  new_val[6]= atof(Edit7->Text.c_str());
  new_val[7]= atof(Edit8->Text.c_str());
  new_val[8]= atof(Edit9->Text.c_str());
  new_val[9]= atof(Edit10->Text.c_str());
  new_val[10]= atof(Edit11->Text.c_str());
  new_val[11]= atof(Edit12->Text.c_str());
  if(m_type==2)
  {
     Reg_Def.AI_RH[m_idx]= new_val[0];
     Reg_Def.AI_RL[m_idx]= new_val[1];
     Reg_Def.AI_BH[m_idx]= new_val[2];
     Reg_Def.AI_BL[m_idx]= new_val[3];
     Reg_Def.AI_FL[m_idx]= new_val[4];
     Reg_Def.AI_BARE[m_idx]= new_val[5];
     Reg_Def.AI_HH[m_idx]= new_val[6];
     Reg_Def.AI_H[m_idx]= new_val[7];
     Reg_Def.AI_L[m_idx]= new_val[8];
     Reg_Def.AI_LL[m_idx]= new_val[9];
     Reg_Def.AI_DEAD[m_idx]= new_val[10];
     Reg_Def.AI_INIT[m_idx]= new_val[11];
     display_listview_TAG_Def(Form2->ListView1, m_type, m_idx);
  }
  else if(m_type==3)
  {
     Reg_Def.AO_RH[m_idx]= new_val[0];
     Reg_Def.AO_RL[m_idx]= new_val[1];
     Reg_Def.AO_BH[m_idx]= new_val[2];
     Reg_Def.AO_BL[m_idx]= new_val[3];
     Reg_Def.AO_FL[m_idx]= new_val[4];
     Reg_Def.AO_BARE[m_idx]= new_val[5];
     Reg_Def.AO_HH[m_idx]= new_val[6];
     Reg_Def.AO_H[m_idx]= new_val[7];
     Reg_Def.AO_L[m_idx]= new_val[8];
     Reg_Def.AO_LL[m_idx]= new_val[9];
     Reg_Def.AO_DEAD[m_idx]= new_val[10];
     Reg_Def.AO_INIT[m_idx]= new_val[11];
     display_listview_TAG_Def(Form2->ListView1, m_type, m_idx);
  }
  else if(m_type==6)
  {
     addr_1= m_idx + ED_MAX;
     Reg_Def.AI_HH[addr_1]= new_val[6];
     Reg_Def.AI_H[addr_1]= new_val[7];
     Reg_Def.AI_L[addr_1]= new_val[8];
     Reg_Def.AI_LL[addr_1]= new_val[9];
     Reg_Def.AI_DEAD[addr_1]= new_val[10];
     Reg_Def.AI_INIT[addr_1]= new_val[11];
     display_listview_TAG_Def(Form2->ListView1, m_type, m_idx);
  }
  else if(m_type==7)
  {
     addr_1= m_idx + ED_MAX;
     Reg_Def.AO_HH[addr_1]= new_val[6];
     Reg_Def.AO_H[addr_1]= new_val[7];
     Reg_Def.AO_L[addr_1]= new_val[8];
     Reg_Def.AO_LL[addr_1]= new_val[9];
     Reg_Def.AO_DEAD[addr_1]= new_val[10];
     Reg_Def.AO_INIT[addr_1]= new_val[11];
     display_listview_TAG_Def(Form2->ListView1, m_type, m_idx);
  }

}
//---------------------------------------------------------------------------
void __fastcall TAIAODefDlg::Edit5Exit(TObject *Sender)
{
   float val;
   val= atof(Edit5->Text.c_str());
   if(check_Filter_value(val)!=0)
   {
      Edit5->SetFocus();
   }
}
//---------------------------------------------------------------------------
void __fastcall TAIAODefDlg::Edit11Exit(TObject *Sender)
{
   float val;
   val= atof(Edit11->Text.c_str());
   if(check_Dead_value(val)!=0)
   {
      Edit11->SetFocus();
   }
}
//---------------------------------------------------------------------------
int __fastcall TAIAODefDlg::check_data(void)
{
   float val, rh, rl, bh, bl;
   float alm_hh, alm_h, alm_l, alm_ll;
   int rc;

   rc= 0;
   val= atof(Edit5->Text.c_str());
   if(check_Filter_value(val)!=0)
   {
      Edit5->SetFocus();
      rc=-1;
   }
   val= atof(Edit11->Text.c_str());
   if(check_Dead_value(val)!=0)
   {
      Edit11->SetFocus();
      rc= -1;
   }

   rh= atof(Edit1->Text.c_str());
   rl= atof(Edit2->Text.c_str());
   bh= atof(Edit3->Text.c_str());
   bl= atof(Edit4->Text.c_str());
   if(rl >rh)
   {
     MessageBox(NULL, "Range Low can't large than Range High", WinCON8000, MB_OK);
     rc= -1;
   }
   if(bl >bh)
   {
     MessageBox(NULL, "Bare Low can't large than Bare High", WinCON8000, MB_OK);
     rc= -1;
   }

   alm_hh= atof(Edit7->Text.c_str());
   alm_h= atof(Edit8->Text.c_str());
   alm_l= atof(Edit9->Text.c_str());
   alm_ll= atof(Edit10->Text.c_str());
   if(alm_h >alm_hh)
   {
     MessageBox(NULL, "Alarm High Limit can't large than Alarm High High Limit", WinCON8000, MB_OK);
     rc= -1;
   }
   if(alm_l >alm_h)
   {
     MessageBox(NULL, "Alarm Low Limit can't large than Alarm High Limit", WinCON8000, MB_OK);
     rc= -1;
   }
   if(alm_ll >alm_l)
   {
     MessageBox(NULL, "Alarm Low Low Limit Low can't large than Alarm Low Limit", WinCON8000, MB_OK);
     rc= -1;
   }

  return(rc);

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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