📄 svisupdisp.cpp
字号:
/************************************************
Update History:
2000.06.08:procISUPCLGNOdisp()
2000.07.11:procISUPGNdisp()
2000.07.19:procISUPCONNOdisp()
*************************************************/
#include "stdafx.h"
#include <windows.h>
extern BYTE *dispbuf,*recbuf;
extern WORD displen;
extern WORD Version;
#define bytedisp(x) *dispbuf++=x; \
*dispbuf++=1; \
*dispbuf++=*recbuf; \
*dispbuf++=8; \
*dispbuf++=*recbuf++;\
*dispbuf++=0xcc; \
displen+=6;
#define procOPTIONoverDisp(x) *dispbuf++=x; \
*dispbuf++=1; \
*dispbuf++=0; \
*dispbuf++=8; \
*dispbuf++=0; \
*dispbuf++=0xcc;\
displen+=6;
#define proc3byte(x) *dispbuf++=x;\
*dispbuf++=3;\
*dispbuf++=*recbuf;\
*dispbuf++=*(recbuf+1);\
*dispbuf++=*(recbuf+2);\
*dispbuf++=24;\
*dispbuf++=*(recbuf+2);\
*dispbuf++=*(recbuf+1);\
*dispbuf++=*recbuf;\
*dispbuf++=0xcc;\
displen+=10;recbuf+=3;
#define proc2byte(x) *dispbuf++=x;\
*dispbuf++=2;\
*(WORD *)dispbuf=*(WORD *)recbuf;dispbuf+=2;\
*dispbuf++=16;\
*dispbuf++=*(recbuf+1);\
*dispbuf++=*recbuf;recbuf+=2;\
*dispbuf++=0xcc;\
displen+=8;
extern void procDPCOPCSLC14disp();
extern void proc24bitsdisp(BYTE dfldno);
extern void proc8bitsdisp(BYTE dfldno);
void procISUPCLGNOdisp(BYTE dfldno)
{ BYTE li,oddeven,i;
//CLGNOLI,8bits
*dispbuf++=dfldno;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
displen+=6;
//ADDIN:D6-D0
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=7;
*dispbuf++=(*recbuf)<<1;
*dispbuf++=0xcc;
//odd\even:D7
*dispbuf++=dfldno+2;
*dispbuf++=0;
*dispbuf++=1;
oddeven=*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
//D1-D0
*dispbuf++=dfldno+3;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=2;
*dispbuf++=(*recbuf)<<6;
*dispbuf++=0xcc;
//D3-d2
*dispbuf++=dfldno+4;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x0c)<<4; //update by 2000.06.08
*dispbuf++=0xcc;
//D6-d4
*dispbuf++=dfldno+5;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf&0x70)<<1;
*dispbuf++=0xcc;
//D7
*dispbuf++=dfldno+6;
*dispbuf++=0;
*dispbuf++=1;
*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
displen+=32;
li-=2;
if(li!=0)//exist ADDR
{*dispbuf++=dfldno+7;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
if(oddeven==0x80) //addr is odd(with ST)
{displen+=li*2+3;
li--;
*dispbuf++=li*8;
for(i=0;i<li;i++) *dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
recbuf+=li+1;
}
else //addr is even(with ST)
{*dispbuf++=li*8-4;
for(i=0;i<li-1;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
*dispbuf++=(*(recbuf+li-1))<<4;
recbuf+=li;
displen+=li*2+4;
}
*dispbuf++=0xcc;
}//exist ADDR
}
void procISUPNSPERdisp(BYTE dfldno)
{ BYTE len,li,i;
//NSPERLI,8bits
*dispbuf++=dfldno;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
displen+=6;
//network len,8bits,P82
*dispbuf++=dfldno+1;
*dispbuf++=1;
len=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=len;
*dispbuf++=0xcc;
displen+=6;
if(len!=0)
{
//D3-D0
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
//D6-D4
*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf&0x70)<<1;
*dispbuf++=0xcc;
displen+=11;
recbuf++;
//NETWORK ID
len--;
if(len!=0)
{*dispbuf++=dfldno+4;
*dispbuf++=len;
for(i=0;i<len;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=len*8;
for(i=0;i<len;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=0xcc;
displen+=len*2+4;
}
}
//NSPER
if(li>len+1)
{li-=len-1;
*dispbuf++=dfldno+5;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=li*8;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=0xcc;
displen+=li*2+4;
}
}
void procISUPGDdisp(BYTE li,BYTE dfldno)
{ BYTE i;
//digital type:D4-D0
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=5;
*dispbuf++=(*recbuf)<<3;
*dispbuf++=0xcc;
//D7-D5
*dispbuf++=dfldno+1;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf++)&0xe0;
*dispbuf++=0xcc;
displen+=11;
//digital
if(li>1)
{li--;
*dispbuf++=dfldno+2;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=li*8;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li*2+4;
}
}
void procISUPGNdisp(BYTE dfldno)
{ BYTE li,oddeven,i;
//GNLI,8bits
*dispbuf++=dfldno;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
displen+=6;
//in:8bits
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=8;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//ADDIN:D6-D0
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=7;
*dispbuf++=(*recbuf)<<1;
*dispbuf++=0xcc;
//odd\even:D7
*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=1;
oddeven=*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
//D1-D0
*dispbuf++=dfldno+4;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=2;
*dispbuf++=(*recbuf)<<6;
*dispbuf++=0xcc;
//D3-d2
*dispbuf++=dfldno+5;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x0c)<<2;
*dispbuf++=0xcc;
//D5-d4
*dispbuf++=dfldno+6;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x30)<<2;
*dispbuf++=0xcc;
//NIIN:D7-D6
*dispbuf++=dfldno+7;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=*recbuf&0xc0;
*dispbuf++=0xcc;
recbuf++;
displen+=38;
li-=3; //update by 2000.07.11
if(li!=0)//exist ADDR
{*dispbuf++=dfldno+8;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
if(oddeven==0)
{*dispbuf++=li*8;
for(i=0;i<li;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
}
else
{*dispbuf++=li*8-4;
for(i=0;i<li-1;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
*dispbuf++=(*(recbuf+li-1))<<4;
}
*dispbuf++=0xcc;
recbuf+=li;
displen+=li*2+4;
}//exist ADDR
}
void procISUPOCLDNOdisp(BYTE dfldno)
{ BYTE oddeven,i,li;
//No.67 field:RORCNOLI,8bits
*dispbuf++=dfldno;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
displen+=6;
//ADDIN:D6-D0
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=7;
*dispbuf++=(*recbuf)<<1;
*dispbuf++=0xcc;
//odd\even:D7
*dispbuf++=dfldno+2;
*dispbuf++=0;
*dispbuf++=1;
oddeven=*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
//D2
*dispbuf++=dfldno+3;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=1;
*dispbuf++=(*recbuf&0x04)<<5;
*dispbuf++=0xcc;
//D6-D4
*dispbuf++=dfldno+4;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf&0x78)<<1;
*dispbuf++=0xcc;
recbuf++;
displen+=22;
if(li>2)//exist ADDR
{li-=2;
*dispbuf++=dfldno+5;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
if(oddeven==0)
{*dispbuf++=li*8;
for(i=0;i<li;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
}
else
{*dispbuf++=li*8-4;
for(i=0;i<li-1;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
*dispbuf++=(*(recbuf+li-1))<<4;
}
*dispbuf++=0xcc;
recbuf+=li;
displen+=li*2+4;
}//exist ADDR
}
void procISUPOCONNOdisp(BYTE li,BYTE dfldno)
{ BYTE i,oddeven;
//ADDIN:D6-D0
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=7;
*dispbuf++=(*recbuf)<<1;
*dispbuf++=0xcc;
//odd\even:D7
*dispbuf++=dfldno+1;
*dispbuf++=0;
*dispbuf++=1;
oddeven=*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
//D1-D0
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=2;
*dispbuf++=*recbuf<<6;
*dispbuf++=0xcc;
//D3-D2
*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0xc)<<4;
*dispbuf++=0xcc;
recbuf++;
//D6-D4
*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf&0x70)<<1;
*dispbuf++=0xcc;
recbuf++;
displen+=25;
li-=2;
if(li>0)//exist ADDR
{*dispbuf++=dfldno+4;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
if(oddeven==0)
{*dispbuf++=li*8;
for(i=0;i<li;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
}
else
{*dispbuf++=li*8-4;
for(i=0;i<li-1;i++)
*dispbuf++=(*(recbuf+i)>>4)|(*(recbuf+i)<<4);
*dispbuf++=(*(recbuf+li-1))<<4;
}
*dispbuf++=0xcc;
recbuf+=li;
displen+=li*2+4;
}//exist ADDR
}
void procISUPPCINFO(BYTE dfldno) //P86
{ BYTE li;
//option para name,8bits
bytedisp(dfldno)
//option li,8bits
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
while(li>=2)
{*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=8;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
*dispbuf++=dfldno+3;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=8;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=12;
li-=2;
}//while
if(li > 0) //add by 2000.07.11
recbuf += li;
}
void procISUPCRdisp(BYTE li,BYTE dfldno) //P86
{
//local ref,16bits
if(li<5) {recbuf+=li;return;}
*dispbuf++=dfldno;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=16;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
//point code
proc3byte(dfldno+1)
li-=5;
if(li>0)
{bytedisp(dfldno+2)
li--;
if(li>0)
{*dispbuf++=dfldno;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=16;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
}
}
}
void procISUPBaseOption(BYTE dfldno)
{ BYTE i,li;
//option para name,8bits
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -