📄 std_sub.cpp
字号:
#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 + -