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

📄 main.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include  <stdio.h>

#define  MAINPROGRAM
#include "WinCONSYS.h"   // common variable define
#include "main.h"
#include "std_sub.h"
#include "About.h"
#include "OpenTCP.h"
#include "TMCN_Dlg.h"
#include "DIDO_Dlg.h"
#include "AIAO_Dlg.h"
#include "MBMaster_Dlg.h"
#include "TAGDef.h"
#include "IOModule.h"
#include "MixDisp_Dlg.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::display_date_time(void)
{
   char  buff[80];
   memset(buff, 0, sizeof(buff));
   get_date_time(&YEAR, &MONTH, &DAY, &HOUR, &MINUTE, &SECOND, &NSEC, &WEEK);
   sprintf(buff, "%04d/%02d/%02d %02d:%02d:%02d",
                 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND);
   Form1->StatusBar1->Panels->Items[0]->Text= buff;
   return;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::set_menu_enabled(int idx)
{
  if(DISP_FLAG[0]==1) InputCoil1->Enabled= true;
  else if(DISP_FLAG[1]==1) OutputCoil1->Enabled= true;
  else if(DISP_FLAG[2]==1) InputRegister1->Enabled= true;
  else if(DISP_FLAG[3]==1) HoldingRegister1->Enabled= true;
  else if(DISP_FLAG[4]==1) InputCoilSoft1->Enabled= true;
  else if(DISP_FLAG[5]==1) OutputCoilSoft1->Enabled= true;
  else if(DISP_FLAG[6]==1) InputRegisterSoft1->Enabled= true;
  else if(DISP_FLAG[7]==1) OutputRegisterSoft1->Enabled= true;
  else if(DISP_FLAG[8]==1) TimerTable1->Enabled= true;
  else if(DISP_FLAG[9]==1) CounterTable1->Enabled= true;
  else if(DISP_FLAG[10]==1) MixDisplay1->Enabled= true;

  memset(DISP_FLAG, 0, sizeof(DISP_FLAG));
  DISP_FLAG[idx]= 1;

  if(DISP_FLAG[0]==1) InputCoil1->Enabled= false;
  else if(DISP_FLAG[1]==1) OutputCoil1->Enabled= false;
  else if(DISP_FLAG[2]==1) InputRegister1->Enabled= false;
  else if(DISP_FLAG[3]==1) HoldingRegister1->Enabled= false;
  else if(DISP_FLAG[4]==1) InputCoilSoft1->Enabled= false;
  else if(DISP_FLAG[5]==1) OutputCoilSoft1->Enabled= false;
  else if(DISP_FLAG[6]==1) InputRegisterSoft1->Enabled= false;
  else if(DISP_FLAG[7]==1) OutputRegisterSoft1->Enabled= false;
  else if(DISP_FLAG[8]==1) TimerTable1->Enabled= false;
  else if(DISP_FLAG[9]==1) CounterTable1->Enabled= false;
  else if(DISP_FLAG[10]==1) MixDisplay1->Enabled= true;   // always enabled

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// Program initial
   display_date_time();
   open_system_table();

   OpenTCP1->Enabled= true;
   CloseTCP1->Enabled= false;
   memset(DISP_FLAG, 0, sizeof(DISP_FLAG));
//   InputRegister1Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
// Program close
   MBTCPClose(1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
// Program close
  Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::About1Click(TObject *Sender)
{
// About Box
//  unsigned long  ldata;
//  unsigned char bf[10];
//  char buff[80];

//  ldata= 0x01020304;
//  memcpy(bf, (unsigned char *)&ldata, 4);
//  sprintf(buff, "%02X %02X %02X, %02X", bf[0], bf[1], bf[2], bf[3]);
  AboutBox->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   display_date_time();
  if(DISP_FLAG[0]==1) display_listview_data(ListView1, 0);
  else if(DISP_FLAG[1]==1) display_listview_data(ListView1, 1);
  else if(DISP_FLAG[2]==1) display_listview_data(ListView1, 2);
  else if(DISP_FLAG[3]==1) display_listview_data(ListView1, 3);
  else if(DISP_FLAG[4]==1) display_listview_data(ListView1, 4);
  else if(DISP_FLAG[5]==1) display_listview_data(ListView1, 5);
  else if(DISP_FLAG[6]==1) display_listview_data(ListView1, 6);
  else if(DISP_FLAG[7]==1) display_listview_data(ListView1, 7);
  else if(DISP_FLAG[8]==1) display_listview_data(ListView1, 8);
  else if(DISP_FLAG[9]==1) display_listview_data(ListView1, 9);
  else if(DISP_FLAG[10]==1) display_listview_data(ListView1, 10);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OpenTCP1Click(TObject *Sender)
{
// Open Port
    unsigned char ip[20], recv[20];
    int i, rc;
    char  buff[80];

    memset(ip, 0, sizeof(ip));
    if(OpenTCPDlg->Execute(ip)==0)
    {
       rc= MBTCPInit(SockNo, ip, 503, 3000);  // use 503 for Modbus IP Port
       if(rc==MB_RTC_OK)
       {
          // try to get coil data, to check connection is OK or not
          rc=MBTCP_R_Coils(SockNo, ModbusID, 1, 1, recv, 1);
          if(rc==MB_RTC_OK)
          {
            OpenTCP1->Enabled= false;
            CloseTCP1->Enabled= true;
            MessageBox(NULL, "Open Modbus TCP OK....", WinCON8000, MB_OK);
            Form1->StatusBar1->Panels->Items[3]->Text= "TCP Connect";
            for(i=0; i<10; i++)  // start polling again
            {
              if(DISP_FLAG[i]==1)
               { Timer2->Enabled= true; break;}
            }
          }
          else
          {
            sprintf(buff, "Modbus TCP connect error, rtc=%d", rc);
            MessageBox(NULL, buff, WinCON8000, MB_OK);
            MBTCPClose(SockNo);
            Form1->StatusBar1->Panels->Items[3]->Text= "TCP Disconnect";
          }
       }
       else
       {
         sprintf(buff, "Can't Open Modbus TCP, rtc=%d", rc);
         MessageBox(NULL, buff, WinCON8000, MB_OK);
         Form1->StatusBar1->Panels->Items[3]->Text= "TCP Disconnect";
       }
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CloseTCP1Click(TObject *Sender)
{
  int rc;
  unsigned char recv[20];
  char buff[80];

   Timer2->Enabled= false;
   OpenTCP1->Enabled= true;
   CloseTCP1->Enabled= false;
   Form1->StatusBar1->Panels->Items[3]->Text= "TCP Disconnect";
   MBTCPClose(SockNo);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InputCoil1Click(TObject *Sender)
{
   set_menu_enabled(0);
   Label1->Caption= "Input Coil";
   display_listview_title(ListView1, 0);
   display_listview_fix_item(ListView1, 0);
   display_listview_data(ListView1, 0);
   setup_poll_unit(0);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OutputCoil1Click(TObject *Sender)
{
   set_menu_enabled(1);
   Label1->Caption= "Output Coil";
   display_listview_title(ListView1, 1);
   display_listview_fix_item(ListView1, 1);
   display_listview_data(ListView1, 1);
   setup_poll_unit(1);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InputRegister1Click(TObject *Sender)
{
   set_menu_enabled(2);
   Label1->Caption= "Input Register";
   display_listview_title(ListView1, 2);
   display_listview_fix_item(ListView1, 2);
   display_listview_data(ListView1, 2);
   setup_poll_unit(2);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::HoldingRegister1Click(TObject *Sender)
{
   set_menu_enabled(3);
   Label1->Caption= "Holding Register";
   display_listview_title(ListView1, 3);
   display_listview_fix_item(ListView1, 3);
   display_listview_data(ListView1, 3);
   setup_poll_unit(3);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InputCoilSoft1Click(TObject *Sender)
{
   set_menu_enabled(4);
   Label1->Caption= "Input Coil Soft";
   display_listview_title(ListView1, 4);
   display_listview_fix_item(ListView1, 4);
   display_listview_data(ListView1, 4);
   setup_poll_unit(4);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OutputCoilSoft1Click(TObject *Sender)
{
   set_menu_enabled(5);
   Label1->Caption= "Output Coil Soft";
   display_listview_title(ListView1, 5);
   display_listview_fix_item(ListView1, 5);
   display_listview_data(ListView1, 5);
   setup_poll_unit(5);
   Timer2->Enabled= true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InputRegisterSoft1Click(TObject *Sender)
{
   set_menu_enabled(6);
   Label1->Caption= "Input Register Soft";
   display_listview_title(ListView1, 6);
   display_listview_fix_item(ListView1, 6);
   display_listview_data(ListView1, 6);

⌨️ 快捷键说明

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