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

📄 setu.~cpp

📁 这是个16路采集器的上位机源码。该套程序是由C++builder开发的
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "SetU.h"
#include "MainU.h"
#include <dialogs.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma link "Button3D"
#pragma resource "*.dfm"
TSetFrm *SetFrm;
//---------------------------------------------------------------------------
__fastcall TSetFrm::TSetFrm(TComponent* Owner)
        : TForm(Owner)
{
   edt[0]=Edit1;
   edt[1]=Edit2;
   edt[2]=Edit3;
   edt[3]=Edit4;
   edt[4]=Edit5;
   edt[5]=Edit6;
   edt[6]=Edit7;
   edt[7]=Edit8;
   edt[8]=Edit9;
   edt[9]=Edit10;
   edt[10]=Edit11;
   edt[11]=Edit12;
   edt[12]=Edit13;
   edt[13]=Edit14;
   edt[14]=Edit15;
   edt[15]=Edit16;
   edt[16]=Edit17;
   edt[17]=Edit18;
   edt[18]=Edit19;
   edt[19]=Edit20;
   edt[20]=Edit21;
   edt[21]=Edit22;
   edt[22]=Edit23;
   edt[23]=Edit24;
   edt[24]=Edit25;
   edt[25]=Edit26;
   edt[26]=Edit27;
   edt[27]=Edit28;
   edt[28]=Edit29;
   edt[29]=Edit30;
   edt[30]=Edit31;
   edt[31]=Edit32;
   jixianzhi[0]=Edit34;
   jixianzhi[1]=Edit35;
   jixianzhi[2]=Edit36;
   jixianzhi[3]=Edit37;
   jixianzhi[4]=Edit38;
   jixianzhi[5]=Edit39;
   jixianzhi[6]=Edit40;
   jixianzhi[7]=Edit41;
   jixianzhi[8]=Edit42;
   jixianzhi[9]=Edit43;
   jixianzhi[10]=Edit44;
   jixianzhi[11]=Edit45;
   jixianzhi[12]=Edit46;
   jixianzhi[13]=Edit47;
   jixianzhi[14]=Edit48;
   jixianzhi[15]=Edit49;
   danwei[0]=ComboBox1;
   danwei[1]=ComboBox2;
   danwei[2]=ComboBox3;
   danwei[3]=ComboBox4;
   danwei[4]=ComboBox5;
   danwei[5]=ComboBox6;
   danwei[6]=ComboBox7;
   danwei[7]=ComboBox8;
   danwei[8]=ComboBox9;
   danwei[9]=ComboBox10;
   danwei[10]=ComboBox11;
   danwei[11]=ComboBox12;
   danwei[12]=ComboBox13;
   danwei[13]=ComboBox14;
   danwei[14]=ComboBox15;
   danwei[15]=ComboBox16;
   dianyafanwei[0]=ComboBox17;
   dianyafanwei[1]=ComboBox18;
   dianyafanwei[2]=ComboBox19;
   dianyafanwei[3]=ComboBox20;
   dianyafanwei[4]=ComboBox21;
   dianyafanwei[5]=ComboBox22;
   dianyafanwei[6]=ComboBox23;
   dianyafanwei[7]=ComboBox24;
   dianyafanwei[8]=ComboBox25;
   dianyafanwei[9]=ComboBox26;
   dianyafanwei[10]=ComboBox27;
   dianyafanwei[11]=ComboBox28;
   dianyafanwei[12]=ComboBox29;
   dianyafanwei[13]=ComboBox30;
   dianyafanwei[14]=ComboBox31;
   dianyafanwei[15]=ComboBox32;
   /*************初始化定义的数组,与相应Edit匹配,xp,11-11*****/
   //将输入的输出值保存与自定义的数组Val_SetValPi中
   Val_SetValPi[0]=Edt_SetVal_P1;
   Val_SetValPi[1]=Edt_SetVal_P2;
   Val_SetValPi[2]=Edt_SetVal_P3;
   Val_SetValPi[3]=Edt_SetVal_P4;
   Val_SetValPi[4]=Edt_SetVal_P5;
   Val_SetValPi[5]=Edt_SetVal_P6;
   Val_SetValPi[6]=Edt_SetVal_P7;
   Val_SetValPi[7]=Edt_SetVal_P8;
   Val_SetValPi[8]=Edt_SetVal_P9;
   Val_SetValPi[9]=Edt_SetVal_P10;
   Val_SetValPi[10]=Edt_SetVal_P11;
   Val_SetValPi[11]=Edt_SetVal_P12;
   Val_SetValPi[12]=Edt_SetVal_P13;
   Val_SetValPi[13]=Edt_SetVal_P14;
   Val_SetValPi[14]=Edt_SetVal_P15;
   Val_SetValPi[15]=Edt_SetVal_P16;
   //将输入的恢复值保存与自定义的数组Val_ReSetValPi中
   Val_ReSetValPi[0]=Edt_RetSetVal_P1;
   Val_ReSetValPi[1]=Edt_RetSetVal_P2;
   Val_ReSetValPi[2]=Edt_RetSetVal_P3;
   Val_ReSetValPi[3]=Edt_RetSetVal_P4;
   Val_ReSetValPi[4]=Edt_RetSetVal_P5;
   Val_ReSetValPi[5]=Edt_RetSetVal_P6;
   Val_ReSetValPi[6]=Edt_RetSetVal_P7;
   Val_ReSetValPi[7]=Edt_RetSetVal_P8;
   Val_ReSetValPi[8]=Edt_RetSetVal_P9;
   Val_ReSetValPi[9]=Edt_RetSetVal_P10;
   Val_ReSetValPi[10]=Edt_RetSetVal_P11;
   Val_ReSetValPi[11]=Edt_RetSetVal_P12;
   Val_ReSetValPi[12]=Edt_RetSetVal_P13;
   Val_ReSetValPi[13]=Edt_RetSetVal_P14;
   Val_ReSetValPi[14]=Edt_RetSetVal_P15;
   Val_ReSetValPi[15]=Edt_RetSetVal_P16;
   shijian=MainFrm->Timer2->Interval;
   /*********************************************************/
   for(int i=0;i<16;i++)
   {
     edt[2*i]->Text=MainFrm->min[i];
     edt[2*i+1]->Text=MainFrm->max[i];
     jixianzhi[i]->Text=MainFrm->jixianzhi[i];
     danwei[i]->Text=MainFrm->danwei[i]->Caption;
     dianyafanwei[i]->ItemIndex=MainFrm->dianyafanwei[i];
     /*********************初始化自定义的数组,xp,11-11*******/
     Val_SetValPi[i]->Text=MainFrm->SetVal[i];
     Val_ReSetValPi[i]->Text=MainFrm->ReSetVal[i];
     /********************************************************/
   }
   Edit33->Value=shijian;
}
//---------------------------------------------------------------------------
void __fastcall TSetFrm::Button1Click(TObject *Sender)
{
   /*********在设置完后判断设置数据是否有效,xp,11-11***************/
   if(IsRightData(edt[32],Val_SetValPi[16],Val_ReSetValPi[16])==1)
     {
      if(MessageBox("请确保输入的输出值和恢复值在有效值(最大值和最小值)范围内","警告", MB_OKCANCEL+MB_ICONWARNING)==IDCANCEL)
      //if(Application->MessageBox("当前正在采集数据,确实要退出吗?","提示",MB_OKCANCEL+MB_ICONWARNING)==IDOK)
      {
        Sleep(10);
        Action=caNone;
      }
     else
        {
          return;
        }
     }
   /***************************************************************/
   for(int i=0;i<16;i++)
    { MainFrm->min[i]=edt[2*i]->Text;
      MainFrm->max[i]=edt[2*i+1]->Text;
      /*********保存输入的输出值和恢复值到制定的数组中,xp,11-11*******/
      MainFrm->SetVal[i]=Val_SetValPi[i]->Text;
      MainFrm->ReSetVal[i]=Val_ReSetValPi[i]->Text;
      /****************************************************************/
      MainFrm->jixianzhi[i]=jixianzhi[i]->Text;
      MainFrm->danwei[i]->Caption=danwei[i]->Text+"    ";
      MainFrm->dianyafanwei[i]=dianyafanwei[i]->ItemIndex;
    }
   shijian=Edit33->Value;
   MainFrm->Timer2->Interval=shijian;
     //写入set
  MainFrm->outfile.clear();
  AnsiString FileName="set.dat";
  MainFrm->outfile.open(FileName.c_str());
  for(int i=0;i<16;i++)
  { MainFrm->outfile<<MainFrm->min[i].c_str()<<endl;
    MainFrm->outfile<<MainFrm->max[i].c_str()<<endl;
    /************保存输入的输出值和恢复值到指定的外部文件,xp,11-11*******/
    MainFrm->outfile<<MainFrm->SetVal[i].c_str()<<endl;
    MainFrm->outfile<<MainFrm->ReSetVal[i].c_str()<<endl;
    /********************************************************************/
    MainFrm->outfile<<MainFrm->jixianzhi[i].c_str()<<endl;
    MainFrm->outfile<<MainFrm->danwei[i]->Caption.c_str()<<endl;
    MainFrm->outfile<<MainFrm->dianyafanwei[i]<<endl;
  }
  unsigned int shijian;
  shijian=MainFrm->Timer2->Interval;
  MainFrm->outfile<<shijian<<endl;
   this->Close();
}
//---------------------------------------------------------------------------
/*************************判断数据是否有效的函数,xp,11-11******************/
int __fastcall TSetFrm::IsRightData(TEdit *,TEdit *,TEdit *)
{
     float Val_Set[16],Val_ReSet[16];
     float Val_Min[16],Val_Max[16];
     for(int i=0;i<16;i++)
     {
        Val_Min[i]=StrToFloat(edt[2*i]->Text);
        Val_Max[i]=StrToFloat(edt[2*1+1]->Text);
        Val_Set[i]=StrToFloat(Val_SetValPi[i]->Text);
        Val_ReSet[i]=StrToFloat(Val_ReSetValPi[i]->Text);
        //加判断语句判断输入值是否有效
        if((Val_Set[i]<Val_Min[i]||Val_Set[i]>Val_Max[i])||
           (Val_ReSet[i]<Val_Min[i]||Val_ReSet[i]>Val_Max[i]))
           {
            // Application->MessageBox("Please input right data","Waring",MB_OKCANCEL+MB_ICONWARNING)==IDOK;
            // MessageDlg("Please input right data", mtInformation, TMsgDlgButtons() <<mbOK, 0);
             return 1;
           }
        else
            return 0; 
     }
}
//---------------------------------------------------------------------------
void __fastcall TSetFrm::btnCancelClick(TObject *Sender)
{
    this->Close();    
}
//---------------------------------------------------------------------------











void __fastcall TSetFrm::Button3D1Click(TObject *Sender)
{
   Button1Click(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TSetFrm::Button3D2Click(TObject *Sender)
{
   btnCancelClick(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TSetFrm::Button2Click(TObject *Sender)
{
  /*************加入判读输出值和恢复值范围的判断语句,XP,11月10日***
   float Val_Sma,Val_Lag;
   Val_Sma=StrToFloat(Edit1->Text);
   Val_Lag=StrToFloat(Edit2->Text);                  //获得前面设置的最小,最大值
   float Val_SetVal,Val_ReSetVal;
   Val_SetVal=StrToFloat(Edt_SetVal_P1->Text);
   Val_ReSetVal=StrToFloat(Edt_RetSetVal_P1->Text);  //取得输入的值
   ***************进行比较确定输入值是否有效**************
   if((Val_Sma>Val_SetVal||Val_Lag<Val_SetVal)||
       (Val_Sma>Val_ReSetVal||Val_Lag<Val_ReSetVal))
       {
         ShowMessage("Please input right data!");
       }
   else
   {
     //设定一个标称值,如果超过这个值则将报警 ,此处现将该值设为40
     if(Val_SetVal>90&&Val_ReSetVal>88)
     {
       Beep(5000,5000);
     }
     //else if(Val_setVal>90&&Val_ReSetVal<88)
     else
     {
        ShowMessage("reback good data!");
     }
   }
   /********************************************************/
}
//---------------------------------------------------------------------------




⌨️ 快捷键说明

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