⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graph.c

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 C
📖 第 1 页 / 共 5 页
字号:

    MapSaveFontSize();
    MapSetFontSize(32);

    MapSetColor(MAP_COLOR_RED);
    MapFillCircleRect(MSG_ERROR_POS_X, MSG_ERROR_POS_Y,
		      MSG_ERROR_LEN_X, MSG_ERROR_LEN_Y, 4);
    MapSetColor(MAP_COLOR_WHITE);
    MapDrawString(x, y, Text);

    MapRestoreFontSize();
}

#if 0
#define	EDIT_BOX_X		(32)
#define	EDIT_BOX_Y		(32)
#define	EDIT_BOX_C		(80)
#define	EDIT_BOX_R		(16)
#define	EDIT_BOX_W		(EDIT_BOX_C * EDIT_COL_W + EDIT_FRAME * 0)
#define	EDIT_BOX_H		(EDIT_BOX_R * EDIT_ROW_H)
#define	EDIT_COL_W		( 8)
#define	EDIT_ROW_H		(16 + EDIT_FRAME)
#define	EDIT_FRAME		( 4)

#define	EDIT_ROW(y)		(EDIT_BOX_Y + EDIT_FRAME / 2 + (y) * EDIT_ROW_H)
#define	EDIT_COL(x)		(EDIT_BOX_X + EDIT_FRAME / 1 + (x) * EDIT_COL_W)

static	OSD_POINT	EditCursor;
static	UINT32		MapEditColor;

void MapShowEdit()
{
    MapSetColor(MAP_COLOR_GRAY);
    MapFillRectangle(EDIT_BOX_X		     - EDIT_FRAME,
		     EDIT_BOX_Y		     - EDIT_FRAME,
		     EDIT_BOX_X + EDIT_BOX_W + EDIT_FRAME,
		     EDIT_BOX_Y + EDIT_BOX_H + EDIT_FRAME);

    MapEditClear();
    MapEditSetColor(MAP_COLOR_BLACK);

/*
    MapSetColor(MAP_COLOR_BLUE);
    MapDrawString(EDIT_COL(5), EDIT_ROW(2), "HELLO");
    MapShowEditText("Hello天目领航");
*/
}

void MapShowEditText(BYTE *Text)
{
    BYTE		Char[3];
    BYTE		Size;

    MapSaveFontSize();
    MapSetFontSize(16);

    MapSetColor(MapEditColor);
    while (*Text) {
	Char[0] = *Text++;
/*
	if (Char[0] == 0x0D) {
	    MapEditNewLine();
	}
	else
	if (Char[0] == 0x0A) {
	    EditCursor.x = 0;
	}
	else
*/
	{
	    if (Char[0] > 0x7F) {		// Chinese Font
		Char[1] = *Text++;
		if (Char[1] == 0)
		    break;
		Size = 2;
	    }
	    else {				// English Font
		Size = 1;
	    }
	    Char[Size] = 0;

	    if (EditCursor.x + Size >= EDIT_BOX_C) {
		MapEditNewLine();
		EditCursor.x = 0;
	    }
	    MapDrawString(EDIT_COL(EditCursor.x), EDIT_ROW(EditCursor.y), Char);
	    EditCursor.x += Size;
	}
    }

    MapRestoreFontSize();
    MapEditSetColor(MAP_COLOR_BLACK);
}

void MapEditClear()
{
    MapSaveColor();
    MapSetColor(0xB08080);
    MapFillRectangle(EDIT_BOX_X,
		     EDIT_BOX_Y,
		     EDIT_BOX_X + EDIT_BOX_W,
		     EDIT_BOX_Y + EDIT_BOX_H);
    MapRestoreColor();

    EditCursor.x = 0;
    EditCursor.y = 0;
}

void MapEditNewLine()
{
    if (EditCursor.y + 1 >= EDIT_BOX_R) {
#if 1
	MapMoveWindowUp(EDIT_BOX_X, EDIT_BOX_Y,	EDIT_BOX_W, EDIT_BOX_H);
	MapSaveColor();
	MapSetColor(0xB08080);
	MapFillRectangle(EDIT_BOX_X,
			 EDIT_BOX_Y + EDIT_ROW_H * (EDIT_BOX_R - 1),
			 EDIT_BOX_X + EDIT_BOX_W,
			 EDIT_BOX_Y + EDIT_BOX_H);
	MapRestoreColor();
#else
	MapEditClear();
#endif
    }
    else {
	EditCursor.y++;
    }
}

void MapEditSetColor(UINT32 Color)
{
    MapEditColor = Color;
}
#endif

#if 0
#define LINE_FILL_COLOR		0xB08080
#define LINE_DARK_COLOR		0x408080	
#define LINE_BRIGHT_COLOR	0xE08080

#define SBAR_BOX_X		(64)
#define SBAR_BOX_Y		(480)
#define SBAR_BOX_W		(704 - SBAR_BOX_X * 2)
#define SBAR_BOX_H		(44)
#define SBAR_FRAME		(2)
#define SBAR_TOTAL		(3)
#define SBAR_COL_1		(128)
#define SBAR_COL_2		(128)
#define SBAR_COL_3		(SBAR_BOX_W - SBAR_COL_1 - SBAR_COL_2)
#define SBAR_CHR_1		(SBAR_COL_1 / 12 - 2)

const MAP_ZONE		MapSBarZone[SBAR_TOTAL] = {
    {	SBAR_BOX_X + SBAR_FRAME,
	SBAR_BOX_Y + SBAR_FRAME,
	SBAR_COL_1 - SBAR_FRAME * 2,
	SBAR_BOX_H - SBAR_FRAME * 2			},
    {	SBAR_BOX_X + SBAR_FRAME + SBAR_COL_1,
	SBAR_BOX_Y + SBAR_FRAME,
	SBAR_COL_2 - SBAR_FRAME * 2,
	SBAR_BOX_H - SBAR_FRAME * 2			},
    {	SBAR_BOX_X + SBAR_FRAME + SBAR_COL_1 + SBAR_COL_2,
	SBAR_BOX_Y + SBAR_FRAME,
	SBAR_COL_3 - SBAR_FRAME * 2,
	SBAR_BOX_H - SBAR_FRAME * 2			},
};

const BYTE		MapSBarText[SBAR_TOTAL][5] = {
	"电源",
	"上线",
	"",		// "时间",
};

void MapShowSBar()
{
    BYTE		i;

    MapSetColor(LINE_FILL_COLOR);
    MapFillRectangle(SBAR_BOX_X,		SBAR_BOX_Y - SBAR_FRAME,
		     SBAR_BOX_X + SBAR_BOX_W,	SBAR_BOX_Y + SBAR_BOX_H);

    MapSetColor(LINE_DARK_COLOR);
    for (i = 0; i < SBAR_TOTAL; i++) {
	MapFillRectangle(MapSBarZone[i].x,
			 MapSBarZone[i].y,
			 MapSBarZone[i].x + MapSBarZone[i].w,
			 MapSBarZone[i].y + SBAR_FRAME);
	MapFillRectangle(MapSBarZone[i].x,
			 MapSBarZone[i].y,
			 MapSBarZone[i].x + SBAR_FRAME,
			 MapSBarZone[i].y + MapSBarZone[i].h);
    }

    MapSetColor(LINE_BRIGHT_COLOR);
    for (i = 0; i < SBAR_TOTAL; i++) {
	MapFillRectangle(MapSBarZone[i].x + SBAR_FRAME,
			 MapSBarZone[i].y + MapSBarZone[i].h - SBAR_FRAME,
			 MapSBarZone[i].x + MapSBarZone[i].w,
			 MapSBarZone[i].y + MapSBarZone[i].h);
	MapFillRectangle(MapSBarZone[i].x + MapSBarZone[i].w,
			 MapSBarZone[i].y,
			 MapSBarZone[i].x + MapSBarZone[i].w + SBAR_FRAME,
			 MapSBarZone[i].y + MapSBarZone[i].h);
    }

    MapSetColor(MAP_COLOR_BLUE);
    MapSetBackColor(LINE_FILL_COLOR);
    MapSetFontSize(32);

    for (i = 0; i < SBAR_TOTAL; i++) {
	MapFillString(MapSBarZone[i].x + SBAR_FRAME * 4,
		      MapSBarZone[i].y + (MapSBarZone[i].h - 32) / 2, (BYTE *)MapSBarText[i]);
    }

    for (i = 0; i < SBAR_TOTAL; i++) {
	MapShowSBarIcon(i, 0);
    }
}

void MapShowSBarIcon(BYTE Zone, BYTE State)
{
    UINT16		x, y;

    x = MapSBarZone[Zone].x + 64 + 36;
    y = MapSBarZone[Zone].y + MapSBarZone[Zone].h / 2;

    if (Zone == 2) {
/*
	BYTE		i;
	for (i = 0; i < 5; i++) {
	    if (State <= i)	MapSetColor(MAP_COLOR_RED);
	    else		MapSetColor(MAP_COLOR_GREEN);
	    MapDrawRound(x, y, 12);
	    x += 36;
	}
*/
    }
    else {
	if (State)		MapSetColor(MAP_COLOR_GREEN);
	else			MapSetColor(MAP_COLOR_RED);
	MapDrawRound(x, y, 12);
    }
}

void MapShowSBarText(BYTE Zone, BYTE *Text)
{
    UINT16		x, y;

    x = MapSBarZone[Zone].x + 64 + 36;
    y = MapSBarZone[Zone].y + MapSBarZone[Zone].h / 2;

    if (Zone == 2) {
	MapSaveFontSize();
	MapSetFontSize(32);

	MapSetColor(MAP_COLOR_BLUE);
	MapSetBackColor(LINE_FILL_COLOR);

	MapFillString(MapSBarZone[2].x + SBAR_FRAME * 4,
		      MapSBarZone[2].y + (MapSBarZone[2].h - 32) / 2, Text);
	MapSetColor(LINE_FILL_COLOR);
	MapFillRectangle(MapSBarZone[2].x + SBAR_FRAME * 4 + strlen(Text) * 16,
			 MapSBarZone[2].y + SBAR_FRAME,
			 MapSBarZone[2].x + MapSBarZone[2].w - SBAR_FRAME,
			 MapSBarZone[2].y + MapSBarZone[2].h - SBAR_FRAME);

	MapRestoreFontSize();
    }
}

#define TALK_BOX_X		(64)
#define TALK_BOX_Y		(288)
#define TALK_BOX_W		(704 - TALK_BOX_X * 2)
#define TALK_BOX_H		(160)

#define TALK_FRAME		(2)
#define TALK_TOTAL		(3)
#define TALK_COL_1		(16 * 5 + TALK_FRAME * 8)
#define TALK_COL_2		(16 * 5 + TALK_FRAME * 8)
#define TALK_COL_3		(TALK_BOX_W - TALK_COL_1 - TALK_COL_2)
#define TALK_CHR_3		((TALK_COL_3 - TALK_FRAME * 2) / 16)

#define TALK_COL_W		(16)
#define TALK_ROW_H		(32 + TALK_FRAME * 2)

const MAP_ZONE		MapTalkZone[TALK_TOTAL] = {
    {	TALK_BOX_X + TALK_FRAME,
	TALK_BOX_Y + TALK_FRAME,
	TALK_COL_1 - TALK_FRAME * 2,
	TALK_BOX_H - TALK_FRAME * 2			},
    {	TALK_BOX_X + TALK_FRAME + TALK_COL_1,
	TALK_BOX_Y + TALK_FRAME,
	TALK_COL_2 - TALK_FRAME * 2,
	TALK_BOX_H - TALK_FRAME * 2			},
    {	TALK_BOX_X + TALK_FRAME + TALK_COL_1 + TALK_COL_2,
	TALK_BOX_Y + TALK_FRAME,
	TALK_COL_3 - TALK_FRAME * 2,
	TALK_BOX_H - TALK_FRAME * 2			},
};

void MapShowTalk()
{
    BYTE		i;

    MapSetColor(LINE_FILL_COLOR);
    MapFillRectangle(TALK_BOX_X,		TALK_BOX_Y,
		     TALK_BOX_X + TALK_BOX_W,	TALK_BOX_Y + TALK_BOX_H);
    MapFillRectangle(TALK_BOX_X,		TALK_BOX_Y - 48 - TALK_FRAME,
		     TALK_BOX_X + TALK_BOX_W,	TALK_BOX_Y);

    MapSetColor(LINE_DARK_COLOR);
    for (i = 0; i < TALK_TOTAL; i++) {
	MapFillRectangle(MapTalkZone[i].x,
			 MapTalkZone[i].y,
			 MapTalkZone[i].x + MapTalkZone[i].w,
			 MapTalkZone[i].y + TALK_FRAME);
	MapFillRectangle(MapTalkZone[i].x,
			 MapTalkZone[i].y,
			 MapTalkZone[i].x + TALK_FRAME,
			 MapTalkZone[i].y + MapTalkZone[i].h);
    }
    MapFillRectangle(MapTalkZone[0].x,
		     MapTalkZone[0].y - 48,
		     MapTalkZone[2].x + MapTalkZone[2].w,
		     MapTalkZone[0].y - 48 + TALK_FRAME);
    MapFillRectangle(MapTalkZone[0].x,
		     MapTalkZone[0].y - 48,
		     MapTalkZone[0].x + TALK_FRAME,
		     MapTalkZone[0].y - TALK_FRAME);

    MapSetColor(LINE_BRIGHT_COLOR);
    for (i = 0; i < TALK_TOTAL; i++) {
	MapFillRectangle(MapTalkZone[i].x + TALK_FRAME,
			 MapTalkZone[i].y + MapTalkZone[i].h - TALK_FRAME,
			 MapTalkZone[i].x + MapTalkZone[i].w,
			 MapTalkZone[i].y + MapTalkZone[i].h);
	MapFillRectangle(MapTalkZone[i].x + MapTalkZone[i].w,
			 MapTalkZone[i].y,
			 MapTalkZone[i].x + MapTalkZone[i].w + TALK_FRAME,
			 MapTalkZone[i].y + MapTalkZone[i].h);
    }
    MapFillRectangle(MapTalkZone[0].x + TALK_FRAME,
		     MapTalkZone[0].y - TALK_FRAME * 2,
		     MapTalkZone[2].x + MapTalkZone[2].w,
		     MapTalkZone[0].y - TALK_FRAME);
    MapFillRectangle(MapTalkZone[2].x + MapTalkZone[2].w,
		     MapTalkZone[0].y - 48,
		     MapTalkZone[2].x + MapTalkZone[2].w + TALK_FRAME,
		     MapTalkZone[0].y - TALK_FRAME);

    MapSetColor(MAP_COLOR_BLUE);
    MapFillRectangle(MapTalkZone[0].x + TALK_FRAME	 + TALK_FRAME,
		     MapTalkZone[0].y - 48		 + TALK_FRAME,
		     MapTalkZone[2].x + MapTalkZone[2].w - TALK_FRAME,
		     MapTalkZone[0].y - TALK_FRAME	 - TALK_FRAME);

/*
    MapShowTalkText(0xFF, "- HELLO -");
    MapShowTalkText(0x00, "-OK-");
    MapShowTalkText(0x01, "13:15");
    MapShowTalkText(0x02, "21广州市丰凌电器有限公司-1--广州市丰凌电器有限公司-2--广州市丰凌电器有限公司-3--");
*/
    MapShowTalkText(0xFF, "控制中心消息");
}

void MapShowTalkText(BYTE Zone, BYTE *Text)
{
    UINT16		x, y;
    UINT16		n, c;
    UINT16		i, j;

    MapSaveFontSize();
    MapSetFontSize(32);

    if (Zone == 0xFF) {
	x = TALK_BOX_X + (TALK_BOX_W - strlen(Text) * 16) / 2;
	y = TALK_BOX_Y + TALK_FRAME - 48 + (48 - 32) / 2;

	MapSetColor(MAP_COLOR_WHITE);
	MapSetBackColor(MAP_COLOR_BLUE);
	MapFillString(x, y, Text);
    }
    else
    if (Zone == 2) {
	x = MapTalkZone[Zone].x + TALK_FRAME * 4;
	y = MapTalkZone[Zone].y + TALK_FRAME * 4;

	MapSetColor(MAP_COLOR_BLUE);
	MapSetBackColor(LINE_FILL_COLOR);

	for (n = 0, i = 0; i < 4; i++) {
	    if (n >= strlen(Text)) {
		LineBuffer[0] = 0;
	    }
	    else
	    if (strlen(Text + n) > TALK_CHR_3) {
		strcpylen(LineBuffer, Text + n, TALK_CHR_3);
		n += TALK_CHR_3;
		for (c = 0, j = 0; j < TALK_CHR_3; j++) {
		    if (LineBuffer[j] > 0x7F)	c ^= 0x01;
		}
		if (LineBuffer[TALK_CHR_3 - 1] > 0x7F && c) {
		    LineBuffer[TALK_CHR_3 - 1] = 0;
		    n--;
		}
	    }
	    else {
		strcpy(LineBuffer, Text + n);
		n += strlen(LineBuffer);
	    }

	    for (j = strlen(LineBuffer); j < TALK_CHR_3; j++) {
		LineBuffer[j] = ' ';
	    }
	    LineBuffer[TALK_CHR_3] = 0;
	    MapFillString(x, y, LineBuffer);
	    y += TALK_ROW_H;
	}
    }
    else {
	x = MapTalkZone[Zone].x + TALK_FRAME * 4;
	y = MapTalkZone[Zone].y + TALK_FRAME * 4;

	MapSetColor(MAP_COLOR_RED);
	MapSetBackColor(LINE_FILL_COLOR);
	MapFillString(x, y, Text);
    }

    MapRestoreFontSize();
}
#endif

void GraphTimer100mS()
{
#if 0
    PollingMapRoll();
    PollingMapNote();

    if (MapBottomHoldTimer) {
	MapBottomHoldTimer--;
	if (MapBottomHoldTimer == 0) {
	    MapBottomHoldFlag   = 0;
	}
    }
#endif
}

void ShowDebugHex(UINT32 Data, BYTE Pos)
{
    UINT16		x, y;

#ifdef SUPPORT_LINEAR_PLAYBACK
    if (CheckSystemState(SYSTEM_LINEAR))	return;
#endif

    DispBuffer[0] = Hex2Asc[(Data >> 28) & 0x0f];
    DispBuffer[1] = Hex2Asc[(Data >> 24) & 0x0f];
    DispBuffer[2] = Hex2Asc[(Data >> 20) & 0x0f];
    DispBuffer[3] = Hex2Asc[(Data >> 16) & 0x0f];
    DispBuffer[4] = Hex2Asc[(Data >> 12) & 0x0f];
    DispBuffer[5] = Hex2Asc[(Data >>  8) & 0x0f];
    DispBuffer[6] = Hex2Asc[(Data >>  4) & 0x0f];
    DispBuffer[7] = Hex2Asc[(Data >>  0) & 0x0f];
    DispBuffer[8] = '\0';

    x = (Pos / 8) * 160 + 64;
    y = (Pos % 8) *  50 + 48;

    MapSaveColor();
    MapSaveFontSize();

    MapSetFontSize(32);
    MapSetColor(MAP_COLOR_BLACK);
    MapFillRectangle(x - 8, y - 8, x + 32 / 2 * 8 + 8, y + 32 + 8);
    MapSetColor(MAP_COLOR_WHITE);
    MapDrawString(x, y, DispBuffer);

    MapRestoreFontSize();
    MapRestoreColor();
}

void ShowDebugDec(UINT32 Data, BYTE Pos)
{
    UINT16		x, y;

#ifdef SUPPORT_LINEAR_PLAYBACK
    if (CheckSystemState(SYSTEM_LINEAR))	return;
#endif

    DispBuffer[0] = (Data / 10000000)	% 10 + '0';
    DispBuffer[1] = (Data / 1000000)	% 10 + '0';
    DispBuffer[2] = (Data / 100000)	% 10 + '0';
    DispBuffer[3] = (Data / 10000)	% 10 + '0';
    DispBuffer[4] = (Data / 1000)	% 10 + '0';
    DispBuffer[5] = (Data / 100)	% 10 + '0';
    DispBuffer[6] = (Data / 10)		% 10 + '0';
    DispBuffer[7] = (Data)		% 10 + '0';
    DispBuffer[8] = '\0';

    x = (Pos / 8) * 160 + 64;
    y = (Pos % 8) *  50 + 48;

    MapSaveColor();
    MapSaveFontSize();

    MapSetFontSize(32);
    MapSetColor(MAP_COLOR_BLACK);
    MapFillRectangle(x - 8, y - 8, x + 32 / 2 * 8 + 8, y + 32 + 8);
    MapSetColo

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -