📄 winclass.cpp
字号:
void CWindows::mainf9()
{
}
void CWindows::mainpgup() // process key down arrow
{
if (window_flag) {
pageno--;
sigcursor = TRUE;
UpdateWindow();
}
}
void CWindows::mainpgdn() // process key down arrow
{
if (window_flag) {
pageno++;
sigcursor = TRUE;
UpdateWindow();
}
}
void CWindows::ResetKeyBuf() // reset keyin buffer
{
keyin_buf.dispkeyflag = keyin_buf.keyinstate = keyin_buf.keyinover = FALSE;
keyin_buf.count = 0;
}
void CWindows::parakeyin(INT8U key) // get input data to key buffer
{
INT16U menuid = mainmenuno << 8 | itemmenuno;
if (window_flag) {
switch (menuid) {
case 0x0200: case 0x0201: case 0x0202: case 0x0203:
if (!keyin_buf.keyinstate)
keyin_buf.keyinstate = siginput = TRUE;
keyin_buf.dispkeyflag = TRUE; // when displayed make false
if (keyin_buf.count < keyin_buf.lenlimit)
keyin_buf.keybuf[keyin_buf.count++] = key;
if (keyin_buf.count >= keyin_buf.size) {
keyin_buf.keyinstate = keyin_buf.dispkeyflag = FALSE;
keyin_buf.count = 0;
}
break;
}
}
}
void CWindows::KeyDrop() // delete input from key buffer
{
INT16U menuid = mainmenuno << 8 | itemmenuno;
if (window_flag) {
switch (menuid) {
case 0x0200: case 0x0201: case 0x0202: case 0x0203:
if (keyin_buf.keyinstate)
if (keyin_buf.count > 0) {
keyin_buf.count--;
keyin_buf.dispkeyflag = TRUE;
}
}
siginput = TRUE;
}
}
void CWindows::DispKeyInput(INT8U x, INT8U y, INT8U len, INT8U color, BOOLEAN mask)
{
char i, dislen;
INT8U s[KEYIN_BUF_SIZE + 1];
if (keyin_buf.dispkeyflag) {
keyin_buf.dispkeyflag = FALSE;
if (keyin_buf.count > len) dislen = len;
else dislen = keyin_buf.count;
if (mask) memset(s, '*', dislen);
else memcpy(s, keyin_buf.keybuf, dislen);
for (i = 0; i < len - dislen; i++) s[i + dislen] = ' ';
s[len] = '\0';
PC_DispStr(x, y, s, color);
}
}
void CWindows::scrollup(INT8U topx,INT8U topy,INT8U endx,INT8U endy) // screen window scroll up
{
union REGS r;
r.h.ah = 6;
r.h.al = 1;
r.h.ch = topy;
r.h.cl = topx;
r.h.dh = endy;
r.h.dl = endx - 1;
r.h.bh = BLUE << 4 | WHITE;
int86(0x10, &r, &r);
}
void CWindows::hardset() // display hardware check infomation
{
int i, j;
tpattern_t pattern;
static const INT8U *title_name[] = {"NO.", "BOARD", "STATUS", "TEST OK"};
static const INT8U *item_name1[] = {"PCM-3643(1)", "PCM-3643(2)",
"PCM-3718", "PCM-3724(P1)", "PCM-3724(P2)"};
static const INT8U *item_name2[] = {"PCL-746+(1)", "PCL-746+(2)",
"MIC-2718", "PCL-724(1)", "PCL-724(2)"};
char temp_posx[]={12, 22, 39, 52};
char starty = 7;
if (sigcreat) {
for (i = 0; i < 4; i++)
PC_DispStr(temp_posx[i], starty - 2, title_name[i], BLUE << 4 | YELLOW);
pattern.color = BLUE << 4 | LIGHTRED;
char *str1 = "MIC2000";
char *str2 = "PC104";
char str3[30] = "MACHINE : ";
if (plattype == MPC104) strcat(str3, str2);
if (plattype == MPCMIC) strcat(str3, str1);
PC_DispStr(30, 3, str3, BLUE << 4 | YELLOW);
for (i = 0; i < 5; i++) {
pattern.x = temp_posx[0]; pattern.y = starty + i * 2;
dprintf(pattern, "%u", i + 1);
if (plattype == MPC104)
PC_DispStr(temp_posx[1], pattern.y, item_name1[i], BLUE << 4 | LIGHTRED);
if (plattype == MPCMIC)
PC_DispStr(temp_posx[1], pattern.y, item_name2[i], BLUE << 4 | LIGHTRED);
// if ((CardStatusYx >> i) & 0x1) {
PC_DispStr(temp_posx[2], starty + i * 2, "INSTALLED", BLUE << 4 | WHITE);
switch (i) {
case 0:
for (j = 0; j < _sio1total; j++)
// if (PortSet[j].state)
PC_DispChar(temp_posx[3] + j, starty + i * 2, '*', BLUE << 4 | LIGHTRED);
break;
case 1:
for (j = 0; j < _sio2total; j++)
// if (PortSet[j + _sio1total].state)
PC_DispChar(temp_posx[3] + j, starty + i * 2, '*', BLUE << 4 | LIGHTRED);
break;
case 2:
PC_DispStr(temp_posx[3], starty + i * 2, "single", BLUE << 4 | LIGHTRED);
break;
case 3:
for (j = 0; j < 3; j++)
// if ((ParaStatusYx >> j) & 0x1)
PC_DispChar(temp_posx[3] + j, starty + i * 2, '*', BLUE << 4 | LIGHTRED);
break;
case 4:
for (j = 0; j < 3; j++)
// if ((ParaStatusYx >> j + 3) & 0x1)
PC_DispChar(temp_posx[3] + j, starty + i * 2, '*', BLUE << 4 | LIGHTRED);
break;
}
}
/* else {
PC_DispStr(temp_posx[2], starty + i * 2, "NONE", BLUE << 4 | WHITE);
PC_DispStr(temp_posx[3], starty + i * 2, "FAIL", BLUE << 4 | WHITE);
}
} */
}
}
#define PARNO 8
void CWindows::winportset()
{
if (sigcreat) {
int i, j;
char *title[] =
{"Port1 ", "Port2 ", "Port3 ", "Port4 ",
"Port5 ", "Port6 ", "Port7 ", "Port8 ",
"Port9 ", "Port10", "Port11", "Port12",
"Port13", "Port14", "Port15", "Port16"};
char *item[] =
{"Baud", "Data", "Stop", "Parity",
"Work", "Protocol", "StartAdd", "EndAdd"};
INT8U temp_pos[] = {12, 19, 26, 33, 40, 47, 54, 61};
tpattern_t pattern;
char startx = 2, starty = 3;
sigcreat = FALSE;
for (i = 0; i < PARNO; i++){
PC_DispStr(startx, starty + i, item[i], BLUE << 4 | LIGHTRED);
PC_DispStr(startx, starty +(11+i),item[i],BLUE << 4 | LIGHTRED);}
pattern.color = BLUE << 4 | WHITE;
for (i = 0; i < PARNO; i++) {
PC_DispStr(temp_pos[i], starty - 1 , title[i], BLUE << 4 | YELLOW);
PC_DispStr(temp_pos[i], starty + 10, title[i+8],BLUE << 4 | YELLOW);
pattern.x = temp_pos[i];
int temp_ypos[2] = {3,14};
for(int l = 0; l < 2; l++){
for(j = 0; j < PARNO; j++) {
pattern.y = j + temp_ypos[l];
switch (j) {
case 0:
dprintf(pattern, "%u", PortSet[i+l*8].Baud); break;
case 1:
dprintf(pattern, "%u", PortSet[i+l*8].DataBit); break;
case 2:
dprintf(pattern, "%u", PortSet[i+l*8].StopBit); break;
case 3:
if (PortSet[i+l*8].Parity == 1) dprintf(pattern, "EVEN");
if (PortSet[i+l*8].Parity == 2) dprintf(pattern, "ODD");
if (PortSet[i+l*8].Parity == 0) dprintf(pattern, "NONE");
break;
case 4:
if (PortSet[i+l*8].isWork) dprintf(pattern, "YES");
else dprintf(pattern, "NO");
break;
case 5:
dprintf(pattern, "%s", protocol_name[PortSet[i+l*8].Protocol % MAX_PROTOCOL]);
break;
case 6:
dprintf(pattern, "%u", PortSet[i+l*8].DevStartAddr);
break;
case 7:
dprintf(pattern, "%u", PortSet[i+l*8].DevEndAddr);
} // switch
} // for (j = 0
}
}
}
}
void CWindows::protocolpar()
{
if (sigcreat) {
int i, j;
char *title[] =
{"Port1 ", "Port2 ", "Port3 ", "Port4 ",
"Port5 ", "Port6 ", "Port7 ", "Port8 ",
"Port9 ", "Port10", "Port11", "Port12",
"Port13", "Port14", "Port15", "Port16"};
char *item[] =
{"Frame_A", "Frame_B", "Frame_C", "Frame_D1",
"Frame_D2", "Frame_E"};
INT8U temp_pos[] = {12, 19, 26, 33, 40, 47, 54, 61};
tpattern_t pattern;
char startx = 2, starty = 3;
sigcreat = FALSE;
for (i = 0; i < 6; i++){
PC_DispStr(startx, starty + i, item[i], BLUE << 4 | LIGHTRED);
PC_DispStr(startx, starty +(11+i),item[i],BLUE << 4 | LIGHTRED);}
pattern.color = BLUE << 4 | WHITE;
for (i = 0; i < PARNO; i++) {
PC_DispStr(temp_pos[i], starty - 1 , title[i], BLUE << 4 | YELLOW);
PC_DispStr(temp_pos[i], starty + 10, title[i+8],BLUE << 4 | YELLOW);
pattern.x = temp_pos[i];
int temp_ypos[2] = {3,14};
for(int l = 0; l < 2; l++){
for(j = 0; j < 6; j++) {
pattern.y = j + temp_ypos[l];
switch (j) {
case 0:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
case 1:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
case 2:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
case 3:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
case 4:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
case 5:
dprintf(pattern, "%u", ProtocolSet[i+l*8][j]); break;
} // switch
} // for (j = 0
}
}
}
}
void CWindows::datasourceset()
{
if (sigcreat) {
int i,j;
INT8U *item_name[4][2] =
{{"TOTAL_YX ", "BOARD_YX "},
{"TOTAL_YC ", "BOARD_YC "},
{"TOTAL_YM ", "BOARD_YM "},
{"TOTAL_YK ", "BOARD_YK "}};
INT8U temp_pos[] = {6, 18};
tpattern_t pattern;
char starty = 5;
sigcreat = FALSE;
pattern.color = BLUE << 4 | YELLOW;
for (i = 0; i < 4; i++) {
for (j = 0; j < 2; j++) {
pattern.y = starty + i * 4;
pattern.x = temp_pos[j];
PC_DispStr(pattern.x, pattern.y - 1, item_name[i][j], BLUE << 4 | LIGHTRED);}
pattern.x = 6;
switch (i) {
case 0:
dprintf(pattern, "%u %u", _TotalYx, _TotalBDYx);
break;
case 1:
dprintf(pattern, "%u %u", _TotalYc, _TotalBDYc);
break;
case 2:
dprintf(pattern, "%u %u", _TotalYm, _TotalBDYm);
break;
case 3:
dprintf(pattern, "%u %u", _TotalYk, _TotalBDYk);
break;
}
}
}
}
BOOLEAN CWindows::IsPolling(INT8U portno)
{
BOOLEAN result;
switch (PortSet[portno].Protocol) {
case NEW_BB_CDT:
case DISA:
case DCJZ:
result = FALSE;
break;
case LFP:
case IEC101:
case IEC102:
case IEC103:
case GPS:
case DL645:
case DCMODBUS:
case MODBUS:
case GST:
case STMODBUS:
case TTC31X:
default:
result = TRUE;
break;
}
return (result);
}
int CWindows::ProcessInt()
{
int temp = 0;
sscanf(keyin_buf.keybuf, "%d", &temp);
return (temp);
}
INT16U CWindows::ProcessWord()
{
INT16U temp = 0;
sscanf(keyin_buf.keybuf, "%u", &temp);
return (temp);
}
void CWindows::checktime()
{
int i;
INT8U lenlimit;
tpattern_t pattern;
INT8U *title_name[] = {"YEAR :", "MONTH :", "DAY :", "HOUR :",
"MINUTE :", "SECOND :", "CHECK? :"};
char startx = 30, starty = 7;
if (sigcreat) {
check_time.checktimeflag = FALSE;
GetClock(&check_time.clk);
for (i = 0; i < 7; i++)
PC_DispStr(startx, i + starty, title_name[i], BLUE << 4 | LIGHTRED);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -