📄 acprd_dobj.c
字号:
//=============================================================================
// File: ACPRD_DOBJ.C - V1.00
// Rem.: The ACPRD Project Page on the Web -> http://hc12web.de/acprd
//=============================================================================
//-----------------------------------------------------------------------------
void _drawRevers2(void) {
putcDisp(0x03); // cursor left
putcDisp(0x03); // cursor left
putcDisp(TA_REVERS);
putcDisp(TA_REVERS);
}
UINT8 dobj_timedate_x;
UINT8 dobj_timedate_y;
INT8 dobj_timedate_sel;
BOOL dobj_timedate_upd;
const UINT8 dobj_timedate_sxpos[6] = {2, 5, 8, 13, 16, 19};
void drawTimeDate(void) {
UINT8 n, sx;
if(dobj_timedate_upd == FALSE) return;
// cock symbol
gotoxyDisp(dobj_timedate_x, dobj_timedate_y);
putcDisp('\x90');
putcDisp('\x91');
// time
prDisp02d(shadow_tm->tm_hour);
if(dobj_timedate_sel == 0) _drawRevers2();
putcDisp(':');
prDisp02d(shadow_tm->tm_min);
if(dobj_timedate_sel == 1) _drawRevers2();
putcDisp(':');
prDisp02d(shadow_tm->tm_sec);
if(dobj_timedate_sel == 2) _drawRevers2();
prDispSpace();
// date
prDisp04d(shadow_tm->tm_year + 1900);
if(dobj_timedate_sel == 3) _drawRevers2();
putcDisp('/');
prDisp02d(shadow_tm->tm_mon + 1);
if(dobj_timedate_sel == 4) _drawRevers2();
putcDisp('/');
prDisp02d(shadow_tm->tm_mday);
if(dobj_timedate_sel == 5) _drawRevers2();
prDispSpace();
// draw line below
gotoxyDisp(dobj_timedate_x, dobj_timedate_y+1);
n = 0;
if((dobj_timedate_sel < 0) || (dobj_timedate_sel > 5)) sx = 254;
else sx = dobj_timedate_sxpos[dobj_timedate_sel];
do {
if(n == sx) putcDisp('\x97');
else if(n == sx+1) putcDisp('\x98');
else putcDisp('\x8e');
n++;
} while(n < 22);
}
//-----------------------------------------------------------------------------
UINT8 dobj_temp_x;
UINT8 dobj_temp_y;
BOOL dobj_temp_upd;
void drawTemp(void) {
if(dobj_temp_upd == FALSE) return;
gotoxyDisp(dobj_temp_x, dobj_temp_y);
prDisp02d(shadow_atd0[0]/20);
putcDisp('\x92');
putcDisp('C');
// draw line below
gotoxyDisp(dobj_temp_x, dobj_temp_y+1);
prDispMult(4, '\x8e');
}
//-----------------------------------------------------------------------------
void _drawVolt(UINT16 sym, UINT16 v) {
putcDisp(sym);
v += 512/20;
prDisp02d(v/512);
putcDisp('.');
v = (v % 512) * 10;
prDisp01d(v/512);
putcDisp('V');
prDispSpace();
}
//-----------------------------------------------------------------------------
UINT8 dobj_volts_x;
UINT8 dobj_volts_y;
BOOL dobj_volts_upd;
void drawVolts(void) {
UINT16 sym, vpwr, vbat;
if(dobj_volts_upd == FALSE) return;
gotoxyDisp(dobj_volts_x, dobj_volts_y);
vpwr = shadow_atd0[6];
vbat = shadow_atd0[7];
sym = 0x93;
if((vpwr < ACPRD_VPWR_MIN) || (vpwr <= vbat))
sym += TA_BLINK;
_drawVolt(sym, vpwr);
sym = 0x94;
if(vbat < ACPRD_VBAT_MIN)
sym += TA_BLINK;
_drawVolt(sym, vbat);
// draw line below
gotoxyDisp(dobj_volts_x, dobj_volts_y+1);
prDispMult(14, '\x8e');
}
//-----------------------------------------------------------------------------
UINT8 dobj_jogmenu_x;
UINT8 dobj_jogmenu_y;
INT8 dobj_jogmenu_sel;
BOOL dobj_jogmenu_upd;
const UINT8 * const dobj_jogmenu_items_a[] = {
//---01234567890---
"Arm/Disable",
"Reset Lines",
"Setup Lines",
"Set Tim/Dat",
"Remote Ctrl",
"EntertainMe",
NULL
};
void drawJogMenu(void) {
UINT8 n;
const UINT8 * const *m;
if(dobj_jogmenu_upd == FALSE) return;
m = dobj_jogmenu_items_a;
n = 0;
while(*m) {
gotoxyDisp(dobj_jogmenu_x, dobj_jogmenu_y+n);
prDispSpace();
prDispStr(*m);
prDispSpace();
if(n == dobj_jogmenu_sel) {
gotoxyDisp(dobj_jogmenu_x, dobj_jogmenu_y+n);
putcDisp('\x95');
prDispMult(11, TA_REVERS);
putcDisp('\x96');
}
m++;
n++;
};
}
//-----------------------------------------------------------------------------
UINT8 dobj_asl_x;
UINT8 dobj_asl_y;
INT8 dobj_asl_sel;
BOOL dobj_asl_upd;
// draw Alarm Status Line
//
void drawASL(void) {
UINT8 n;
UINT16 a, c;
if(dobj_asl_upd == FALSE) return;
gotoxyDisp(dobj_asl_x, dobj_asl_y); // frame line above
putcDisp('\x80');
putcDisp('\x83');
for(n=0; n<4; n++)
prDispStr("\x85\x83\x83\x83\x83\x83");
putcDisp('\x87');
gotoxyDisp(dobj_asl_x, dobj_asl_y+1); // draw data line
putcDisp('\x81');
if(al_system_armed) {
if(al_system_status & AL_STAT_ALARM)
putcDisp(TA_BLINK + 0x9f); // alarm
else
putcDisp('\x99'); // okay
}
else putcDisp('\x9c'); // disabled
putcDisp('\x81');
for(n=0; n<4; n++) {
// channel number
putcDisp(TA_REVERS + 0xb1 + n);
a = (n == dobj_asl_sel) ? TA_BLINK : TA_NORMAL;
// line type
if(al_line_type[n] & AL_LTYP_DISABLE) c = '\x9c'; // disabled
else {
if(al_line_type[n] & AL_LTYP_DELAY) c = '\x9e'; // enabled delayed
else c = '\x9d'; // enabled instantly
}
putcDisp(a + c);
// line type cont'd
if(al_line_type[n] & AL_LTYP_SILENT) c ='\x9a'; // silent
else c = '\x9b'; // audible
putcDisp(a + c);
// line status
if(al_line_status[n] & AL_STAT_ALARM)
putcDisp('\x9f'); // alarm
else if(al_line_status[n] & AL_STAT_TAMPER)
putcDisp('T'); // tamper
else
putcDisp('\x99'); // okay
// alarm status
if(al_alarm_status[n] & AL_STAT_ALARM)
putcDisp(TA_BLINK + 0x9f); // alarm
else if(al_alarm_status[n] & AL_STAT_ENTRY)
putcDisp('E'); // entry
else
putcDisp('\x99'); // okay
putcDisp('\x81');
}
gotoxyDisp(dobj_asl_x, dobj_asl_y+2); // frame line below
putcDisp('\x82');
putcDisp('\x84');
for(n=0; n<4; n++) {
if(n == dobj_asl_sel)
prDispStr("\x86\x84\x97\x98\x84\x84");
else
prDispStr("\x86\x84\x84\x84\x84\x84");
}
putcDisp('\x88');
}
//-----------------------------------------------------------------------------
const UINT8 *dobj_keys_label[4];
const UINT8 key_empty[] = { " " };
const UINT8 key_esc[] = { " ESC" };
const UINT8 key_inc[] = { " UP " };
const UINT8 key_dec[] = { "DOWN" };
const UINT8 key_ent[] = { " ENT" };
const UINT8 key_arm[] = { " ARM" };
const UINT8 key_line1[] = { " LN1" };
const UINT8 key_line2[] = { " LN2" };
const UINT8 key_line3[] = { " LN3" };
const UINT8 key_line4[] = { " LN4" };
UINT8 dobj_keys_x;
UINT8 dobj_keys_y;
BOOL dobj_keys_upd;
BOOL dobj_keys_hide;
// draw Keys
//
void drawKeys(void) {
UINT8 n;
if(dobj_asl_upd == FALSE) return;
gotoxyDisp(dobj_keys_x, dobj_keys_y);
for(n=0; n<4; n++) {
prDispSpace();
if(dobj_keys_hide) prDispStr(key_empty);
else prDispStr(dobj_keys_label[n]);
prDispSpace();
}
gotoxyDisp(dobj_keys_x, dobj_keys_y+1);
for(n=0; n<4; n++) {
prDispStr("\xa8\xa9\xaa\xaa\xaa\xab");
}
}
//-----------------------------------------------------------------------------
void drawInit(void) {
dobj_timedate_x = 0;
dobj_timedate_y = 0;
dobj_timedate_upd = TRUE;
dobj_timedate_sel = -1;
dobj_volts_x = 22;
dobj_volts_y = 0;
dobj_volts_upd = TRUE;
dobj_temp_x = 36;
dobj_temp_y = 0;
dobj_temp_upd = TRUE;
dobj_jogmenu_x = 27;
dobj_jogmenu_y = 2;
dobj_jogmenu_upd = TRUE;
dobj_jogmenu_sel = 0;
dobj_asl_x = 0;
dobj_asl_y = 2;
dobj_asl_upd = TRUE;
dobj_asl_sel = -1;
dobj_keys_x = 0;
dobj_keys_y = 6;
dobj_keys_upd = TRUE;
dobj_keys_hide = FALSE;
dobj_keys_label[0] = key_arm;
dobj_keys_label[1] = key_inc;
dobj_keys_label[2] = key_dec;
dobj_keys_label[3] = key_ent;
}
//-----------------------------------------------------------------------------
void drawAll(void) {
drawTimeDate();
drawVolts();
drawTemp();
drawJogMenu();
drawASL();
drawKeys();
// ###
delay(100);
}
//=============================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -