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

📄 std_sub.cpp

📁 《WinCE.NET嵌入式工业用控制器及自动控制系统设计》的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#include  <stdio.h>
#include <stdlib.h>
#include <process.h>
#include  <string.h>
#include  <memory.h>
#include  <fcntl.h>
#include  <sys\types.h>
#include  <sys\stat.h>
#include  <share.h>
#include  <io.h>

#include "WinCONSYS.h"   // common variable define
#include  "std_sub.h"
#include "main.h"
char  *TAG_TYPE[10]= {"Input Coil", "Output Coil", "Input Register", "Holding Register",
                      "Input Coil Soft", "Output Coil Soft", "Input Register Soft", "Output Register Soft",
                      "Timer Table", "Counter Table" };
//---------------------------------------------------------------------------
void display_status_message(AnsiString  s)
{
   Form1->StatusBar1->Panels->Items[1]->Text= s;
}
//---------------------------------------------------------------------------
int get_date_time(short *year, short *month, short *date,
  short *hour, short *minute, short *second, short *msec, short *week)
{
   SYSTEMTIME  t;


   GetLocalTime(&t);

   *year  =t.wYear ;
   *month =t.wMonth;
   *date  =t.wDay  ;
   *hour  =t.wHour ;
   *minute=t.wMinute ;
   *second=t.wSecond ;
   *msec  =t.wMilliseconds ;
   *week  =t.wDayOfWeek ;

   return(0);
}
//---------------------------------------------------------------------------
void display_listview_title(TListView *list, int idx)
{
   int i;

   list->Columns->Clear();
   list->Items->Clear();
   switch(idx)
   {
      case 0:  // Input Coil
      case 1:  // Output Coil
      case 4:  // Input Coil Soft
      case 5:  // Output Coil Soft
        for(i=0; i<4; i++)
          list->Columns->Add();
        list->Column[0]->Caption= "TAG Type";
        list->Column[1]->Caption= "Modbus";
        list->Column[2]->Caption= "Status";
        list->Column[3]->Caption= "Initial Value";
        list->Column[0]->Width= 90;
        list->Column[1]->Width= 60;
        list->Column[2]->Width= 50;
        list->Column[3]->Width= 70;
        break;
      case 2:  // Input Register
      case 3:  // Holding Register
        for(i=0; i<19; i++)
          list->Columns->Add();
        list->Column[0]->Caption= "TAG Type";
        list->Column[1]->Caption= "Modbus";
        list->Column[2]->Caption= "Bare data";
        list->Column[3]->Caption= "Eng. data";
        list->Column[4]->Caption= "ALM HH";
        list->Column[5]->Caption= "ALM H";
        list->Column[6]->Caption= "ALM L";
        list->Column[7]->Caption= "ALM LL";
        list->Column[8]->Caption= "Range High";
        list->Column[9]->Caption= "Range Low";
        list->Column[10]->Caption= "Bare High";
        list->Column[11]->Caption= "Bare Low";
        list->Column[12]->Caption= "Filter";
        list->Column[13]->Caption= "Alarm HH";
        list->Column[14]->Caption= "Alarm H";
        list->Column[15]->Caption= "Alarm L";
        list->Column[16]->Caption= "Alarm LL";
        list->Column[17]->Caption= "Dead zone";
        list->Column[18]->Caption= "Initial Value";
        list->Column[0]->Width= 90;
        list->Column[1]->Width= 60;
        list->Column[2]->Width= 60;
        list->Column[3]->Width= 60;
        list->Column[4]->Width= 60;
        list->Column[5]->Width= 50;
        list->Column[6]->Width= 50;
        list->Column[7]->Width= 50;
        list->Column[8]->Width= 70;
        list->Column[9]->Width= 70;
        list->Column[10]->Width= 70;
        list->Column[11]->Width= 70;
        list->Column[12]->Width= 70;
        list->Column[13]->Width= 70;
        list->Column[14]->Width= 70;
        list->Column[15]->Width= 70;
        list->Column[16]->Width= 70;
        list->Column[17]->Width= 70;
        list->Column[18]->Width= 70;
        break;
      case 6:  // Input Register Soft
      case 7:  // Holding Register Soft
        for(i=0; i<13; i++)
          list->Columns->Add();
        list->Column[0]->Caption= "TAG Type";
        list->Column[1]->Caption= "Modbus";
        list->Column[2]->Caption= "Soft data";
        list->Column[3]->Caption= "ALM HH";
        list->Column[4]->Caption= "ALM H";
        list->Column[5]->Caption= "ALM L";
        list->Column[6]->Caption= "ALM LL";
        list->Column[7]->Caption= "Alarm HH";
        list->Column[8]->Caption= "Alarm H";
        list->Column[9]->Caption= "Alarm L";
        list->Column[10]->Caption= "Alarm LL";
        list->Column[11]->Caption= "Dead zone";
        list->Column[12]->Caption= "Initial Value";
        list->Column[0]->Width= 90;
        list->Column[1]->Width= 60;
        list->Column[2]->Width= 60;
        list->Column[3]->Width= 60;
        list->Column[4]->Width= 50;
        list->Column[5]->Width= 50;
        list->Column[6]->Width= 50;
        list->Column[7]->Width= 70;
        list->Column[8]->Width= 70;
        list->Column[9]->Width= 70;
        list->Column[10]->Width= 70;
        list->Column[11]->Width= 70;
        list->Column[12]->Width= 70;
        break;
      case 8:  // Timer Table
      case 9:  // Counter Table
        for(i=0; i<7; i++)
          list->Columns->Add();
        list->Column[0]->Caption= "TAG Type";
        list->Column[1]->Caption= "Modbus";
        list->Column[2]->Caption= "Preset";
        list->Column[3]->Caption= "Modbus";
        list->Column[4]->Caption= "Current";
        list->Column[5]->Caption= "Modbus";
        list->Column[6]->Caption= "Contact";
        list->Column[0]->Width= 90;
        list->Column[1]->Width= 60;
        list->Column[2]->Width= 60;
        list->Column[3]->Width= 60;
        list->Column[4]->Width= 60;
        list->Column[5]->Width= 60;
        list->Column[6]->Width= 60;
        break;
      case 10:  // Mix Display
        for(i=0; i<7; i++)
          list->Columns->Add();
        list->Column[0]->Caption= "Case No";
        list->Column[1]->Caption= "TAG Type";
        list->Column[2]->Caption= "Modbus";
        list->Column[3]->Caption= "Current Value";
        list->Column[0]->Width= 60;
        list->Column[1]->Width= 150;
        list->Column[2]->Width= 90;
        list->Column[3]->Width= 90;
        break;
   }
}
//---------------------------------------------------------------------------
void display_listview_fix_item(TListView *list, int idx)
{
   int i, j, type, addr;
   TListItem   *item;
   char  buff[80];

   list->Items->Clear();
   memset(buff, 0, sizeof(buff));
   switch(idx)
   {
      case 0:  // Input Coil
	for(i=0; i<DD_MAX_BIT; i++)
	{
          item = list->Items->Add();
          item->Caption = "Input Coil";
          sprintf(buff, "%06d", DI_BARE_PTR+i+100001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
        break;
      case 1:  // Output Coil
	for(i=0; i<DD_MAX_BIT; i++)
	{
          item = list->Items->Add();
          item->Caption = "Output Coil";
          sprintf(buff, "%06d", DO_BARE_PTR+i+1);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
        break;
      case 2:  // Input Register
	for(i=0; i<ED_MAX; i++)
	{
          item = list->Items->Add();
          item->Caption = "Input Register";
          sprintf(buff, "%06d", AI_BARE_PTR+i*2+300001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
	}
        break;
      case 3:  // Holding Register
	for(i=0; i<ED_MAX; i++)
	{
          item = list->Items->Add();
          item->Caption = "Holding Register";
          sprintf(buff, "%06d", AO_BARE_PTR+i*2+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
	}
        break;
      case 4:  // Input Coil Soft
	for(i=0; i<DD_MAX_BIT*2; i++)
	{
          item = list->Items->Add();
          item->Caption = "InCoil Soft";
          sprintf(buff, "%06d", DI_SOFT_PTR+i+100001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
        break;
      case 5:  // Output Coil Soft
	for(i=0; i<DD_MAX_BIT*2; i++)
	{
          item = list->Items->Add();
          item->Caption = "OutCoil Soft";
          sprintf(buff, "%06d", DO_SOFT_PTR+i+1);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
        break;
      case 6:  // Input Register Soft
	for(i=0; i<ED_MAX*4; i++)
	{
          item = list->Items->Add();
          item->Caption = "InReg. Soft";
          sprintf(buff, "%06d",  AI_SOFT_PTR*2+i*2+300001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
	}
        break;
      case 7:  // Output Register Soft
	for(i=0; i<ED_MAX*4; i++)
	{
          item = list->Items->Add();
          item->Caption = "OutReg. Soft";
          sprintf(buff, "%06d", AO_SOFT_PTR*2+i*2+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
          item->SubItems->Add(buff);
	}
        break;
      case 8:  // Timer Table
	for(i=0; i<CT_MAX_CASE; i++)
	{
          item = list->Items->Add();
          item->Caption = "Timer";
          sprintf(buff, "%06d", TM_PSET_PTR+i+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);

          sprintf(buff, "%06d", TM_CURR_PTR+i+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);

          sprintf(buff, "%06d", TM_BIT_PTR+i+1);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
        break;
      case 9:  // Counter Table
	for(i=0; i<CT_MAX_CASE; i++)
	{
          item = list->Items->Add();
          item->Caption = "Counter";
          sprintf(buff, "%06d", CN_PSET_PTR+i+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);

          sprintf(buff, "%06d", CN_CURR_PTR+i+400001);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);

          sprintf(buff, "%06d", CN_BIT_PTR+i+1);
          item->SubItems->Add(buff);
          sprintf(buff, "");
          item->SubItems->Add(buff);
	}
      case 10:  // Mix Display
	for(i=0; i<MIX_DISPLAY_CASE; i++)
	{
          if(MIX_UNIT[i].spare1==0) continue;
          type= MIX_UNIT[i].spare1;
          for(j=0; j<MIX_UNIT[i].words; j++)
          {
             item = list->Items->Add();
             sprintf(buff,"%2d", i+1);
             item->Caption= buff;
             item->SubItems->Add(TAG_TYPE[type-1]);
             addr= MIX_UNIT[i].req_addr + j;
             switch(type)
             {
               case 1:
                 sprintf(buff, "%06d", DI_BARE_PTR+addr+100001);
                 item->SubItems->Add(buff);
                 break;
               case 2:
                 sprintf(buff, "%06d", DO_BARE_PTR+addr+1);
                 item->SubItems->Add(buff);
                 break;
               case 3:
                 sprintf(buff, "%06d", AI_BARE_PTR+addr*2+300001);
                 item->SubItems->Add(buff);
                 break;
               case 4:

⌨️ 快捷键说明

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