📄 std_sub.cpp
字号:
sprintf(buff, "%06d", AO_BARE_PTR+addr*2+400001);
item->SubItems->Add(buff);
break;
case 5:
sprintf(buff, "%06d", DI_SOFT_PTR+addr+100001);
item->SubItems->Add(buff);
break;
case 6:
sprintf(buff, "%06d", DO_SOFT_PTR+addr+1);
item->SubItems->Add(buff);
break;
case 7:
sprintf(buff, "%06d", AI_SOFT_PTR*2+addr*2+300001);
item->SubItems->Add(buff);
break;
case 8:
sprintf(buff, "%06d", AO_SOFT_PTR*2+addr*2+400001);
item->SubItems->Add(buff);
break;
case 9:
sprintf(buff, "%06d", TM_CURR_PTR+addr+400001);
item->SubItems->Add(buff);
break;
case 10:
sprintf(buff, "%06d", CN_CURR_PTR+addr+400001);
item->SubItems->Add(buff);
break;
}
sprintf(buff, "");
item->SubItems->Add(buff);
}
}
break;
}
}
//---------------------------------------------------------------------------
void display_listview_data(TListView *list, int idx)
{
int i, j, type, addr, bytes, bitno, item_no, rc;
char buff[80];
switch(idx)
{
case 0: // Input Coil
for(i=0; i<DD_MAX_BIT; i++)
{
display_listview_TAG(list, 0, i);
}
break;
case 1: // Output Coil
for(i=0; i<DD_MAX_BIT; i++)
{
display_listview_TAG(list, 1, i);
}
break;
case 2: // Input Register
for(i=0; i<ED_MAX; i++)
{
display_listview_TAG(list, 2, i);
}
break;
case 3: // Holding Register
for(i=0; i<ED_MAX; i++)
{
display_listview_TAG(list, 3, i);
}
break;
case 4: // Input Coil Soft
for(i=0; i<DD_MAX_BIT*2; i++)
{
display_listview_TAG(list, 4, i);
}
break;
case 5: // Output Coil Soft
for(i=0; i<DD_MAX_BIT*2; i++)
{
display_listview_TAG(list, 5, i);
}
break;
case 6: // Input Register Soft
for(i=0; i<ED_MAX*4; i++)
{
display_listview_TAG(list, 6, i);
}
break;
case 7: // Output Register Soft
for(i=0; i<ED_MAX*4; i++)
{
display_listview_TAG(list, 7, i);
}
break;
case 8: // Timer Table
for(i=0; i<CT_MAX_CASE; i++)
{
display_listview_TAG(list, 8, i);
}
break;
case 9: // Counter Table
for(i=0; i<CT_MAX_CASE; i++)
{
display_listview_TAG(list, 9, i);
}
case 10: // MIX Display
item_no= 0;
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++)
{
addr= MIX_UNIT[i].req_addr + j;
bytes= addr/8;
bitno= addr%8;
switch(type)
{
case 1:
rc= Coil_Bit_Read(&Coil.DI_BARE[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 2:
rc= Coil_Bit_Read(&Coil.DO_BARE[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 3:
sprintf(buff, "%10g", Reg.AI_ENG[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 4:
sprintf(buff, "%10g", Reg.AO_ENG[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 5:
rc= Coil_Bit_Read(&Coil.DI_SOFT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 6:
rc= Coil_Bit_Read(&Coil.DO_SOFT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 7:
sprintf(buff, "%10g", Reg.AI_SOFT[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 8:
sprintf(buff, "%10g", Reg.AO_SOFT[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 9:
sprintf(buff, "%6d", Reg.TM_CURR[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
case 10:
sprintf(buff, "%6d", Reg.CN_CURR[addr]);
list->Items->Item[item_no]->SubItems->Strings[2]= buff;
break;
}
item_no++;
}
}
break;
}
}
//---------------------------------------------------------------------------
void display_listview_TAG(TListView *list, int idx, int addr)
{
int rc, bytes, bitno, addr_1;
char buff[80];
memset(buff, 0, sizeof(buff));
switch(idx)
{
case 0: // Input Coil
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.DI_BARE[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[1]= buff;
rc= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[2]= buff;
break;
case 1: // Output Coil
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.DO_BARE[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[1]= buff;
rc= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[2]= buff;
break;
case 2: // Input Register
sprintf(buff, "%10g", Reg.AI_BARE[addr]);
list->Items->Item[addr]->SubItems->Strings[1]= buff;
sprintf(buff, "%10g", Reg.AI_ENG[addr]);
list->Items->Item[addr]->SubItems->Strings[2]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AI_HH[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[3]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AI_H[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[4]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AI_L[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[5]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AI_LL[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[6]= buff;
sprintf(buff, "%10g", Reg.AI_RH[addr]);
list->Items->Item[addr]->SubItems->Strings[7]= buff;
sprintf(buff, "%10g", Reg.AI_RL[addr]);
list->Items->Item[addr]->SubItems->Strings[8]= buff;
sprintf(buff, "%10g", Reg.AI_BH[addr]);
list->Items->Item[addr]->SubItems->Strings[9]= buff;
sprintf(buff, "%10g", Reg.AI_BL[addr]);
list->Items->Item[addr]->SubItems->Strings[10]= buff;
sprintf(buff, "%6.3f", Reg.AI_FL[addr]);
list->Items->Item[addr]->SubItems->Strings[11]= buff;
sprintf(buff, "%10g", Reg.AI_HH[addr]);
list->Items->Item[addr]->SubItems->Strings[12]= buff;
sprintf(buff, "%10g", Reg.AI_H[addr]);
list->Items->Item[addr]->SubItems->Strings[13]= buff;
sprintf(buff, "%10g", Reg.AI_L[addr]);
list->Items->Item[addr]->SubItems->Strings[14]= buff;
sprintf(buff, "%10g", Reg.AI_LL[addr]);
list->Items->Item[addr]->SubItems->Strings[15]= buff;
sprintf(buff, "%6.3f", Reg.AI_DEAD[addr]);
list->Items->Item[addr]->SubItems->Strings[16]= buff;
sprintf(buff, "%10g", Reg.AI_INIT[addr]);
list->Items->Item[addr]->SubItems->Strings[17]= buff;
break;
case 3: // Holding Register
sprintf(buff, "%10g", Reg.AO_BARE[addr]);
list->Items->Item[addr]->SubItems->Strings[1]= buff;
sprintf(buff, "%10g", Reg.AO_ENG[addr]);
list->Items->Item[addr]->SubItems->Strings[2]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AO_HH[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[3]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AO_H[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[4]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AO_L[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[5]= buff;
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.AO_LL[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[6]= buff;
sprintf(buff, "%10g", Reg.AO_RH[addr]);
list->Items->Item[addr]->SubItems->Strings[7]= buff;
sprintf(buff, "%10g", Reg.AO_RL[addr]);
list->Items->Item[addr]->SubItems->Strings[8]= buff;
sprintf(buff, "%10g", Reg.AO_BH[addr]);
list->Items->Item[addr]->SubItems->Strings[9]= buff;
sprintf(buff, "%10g", Reg.AO_BL[addr]);
list->Items->Item[addr]->SubItems->Strings[10]= buff;
sprintf(buff, "%6.3f", Reg.AO_FL[addr]);
list->Items->Item[addr]->SubItems->Strings[11]= buff;
sprintf(buff, "%10g", Reg.AO_HH[addr]);
list->Items->Item[addr]->SubItems->Strings[12]= buff;
sprintf(buff, "%10g", Reg.AO_H[addr]);
list->Items->Item[addr]->SubItems->Strings[13]= buff;
sprintf(buff, "%10g", Reg.AO_L[addr]);
list->Items->Item[addr]->SubItems->Strings[14]= buff;
sprintf(buff, "%10g", Reg.AO_LL[addr]);
list->Items->Item[addr]->SubItems->Strings[15]= buff;
sprintf(buff, "%6.3f", Reg.AO_DEAD[addr]);
list->Items->Item[addr]->SubItems->Strings[16]= buff;
sprintf(buff, "%10g", Reg.AO_INIT[addr]);
list->Items->Item[addr]->SubItems->Strings[17]= buff;
break;
case 4: // Input Coil Soft
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.DI_SOFT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[1]= buff;
bytes= (addr+DD_MAX_BIT)/8;
bitno= (addr+DD_MAX_BIT)%8;
rc= Coil_Bit_Read(&Coil.DI_INIT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[2]= buff;
break;
case 5: // Output Coil Soft
bytes= addr/8;
bitno= addr%8;
rc= Coil_Bit_Read(&Coil.DO_SOFT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[1]= buff;
bytes= (addr+DD_MAX_BIT)/8;
bitno= (addr+DD_MAX_BIT)%8;
rc= Coil_Bit_Read(&Coil.DO_INIT[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[2]= buff;
break;
case 6: // Input Register Soft
sprintf(buff, "%10g", Reg.AI_SOFT[addr]);
list->Items->Item[addr]->SubItems->Strings[1]= buff;
bytes= (addr+ED_MAX)/8;
bitno= (addr+ED_MAX)%8;
rc= Coil_Bit_Read(&Coil.AI_HH[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[2]= buff;
rc= Coil_Bit_Read(&Coil.AI_H[bytes], bitno);
if(rc==0)
sprintf(buff, "Off");
else
sprintf(buff, "On");
list->Items->Item[addr]->SubItems->Strings[3]= buff;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -