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

📄 main.c

📁 P115 IC卡手持POS是天石科技32位IC卡POS系列产品之一
💻 C
📖 第 1 页 / 共 4 页
字号:
	while (!inkey()) {
		current1 = GetTickCount();
		if (current1 > origin1 + 300) {
			// 采集电量
			origin1 = current1;
			battery_val_array[index].battery_ret = battery_handle(&(battery_val_array[index].battery_power));
			if (++index >= MAX_COUNT) {
				for (i = 0; i < MAX_COUNT; i++) {
					if (battery_val_array[i].battery_ret == 2) {
						no_battery = true;
						break;
					}
				}
				
				if (i == MAX_COUNT)
					no_battery = false;
					
				// 显示最后一次采集的数据
				if (!no_battery) {
					power = battery_val_array[MAX_COUNT - 1].battery_power;
					ret = battery_val_array[MAX_COUNT - 1].battery_ret;
					clrline(2);
					switch (ret) {
					case 0: // 正常情况
						DisplayMidLine(1, "电量显示", ALIGN_CENTER, false);
						per = 100 * power/ 5;
						if (per > 100) per = 100;
						ShowProgress(2, per);
						break;
					
					case 1: // 正在充电
						DisplayMidLine(1, "正在充电", ALIGN_CENTER, false);
						per = 100 * power/ 5;
						if (per > 100) per = 100;
						ShowProgress(2, per);
						break;
					
					case 2: // 没有电池
						DisplayMidLine(1, "没有电池", ALIGN_CENTER, false);
						ShowProgress(2, 0);
						break;
					}
				}
				else {
					DisplayMidLine(1, "没有电池", ALIGN_CENTER, false);
				}
				index = 0;
			}
		}
	}
}

void adjustLcd()
{
	BYTE origin = LcdGetVolume(), value = origin, percent;
	
	clrscr();
	DisplayMidTitle("对比度", NO_REVERSE_STYLE);
	percent = (double)(LcdGetVolume() - MIN_LCD_VOLUME) / (double)(MAX_LCD_VOLUME - MIN_LCD_VOLUME) * 100;
	ShowProgress(2, percent);

	while (true) {
		switch (get_key()) {
		case vk_DOWN:
			if (value > MIN_LCD_VOLUME) {
				value--;
				LcdSetVolume(value);
				percent = (double)(LcdGetVolume() - MIN_LCD_VOLUME) / (double)(MAX_LCD_VOLUME - MIN_LCD_VOLUME) * 100;
				clrline(2);
				ShowProgress(2, percent);
			}
			break;

		case vk_UP:
			if (value < MAX_LCD_VOLUME) {
				value++;
				LcdSetVolume(value);
				percent = (double)(LcdGetVolume() - MIN_LCD_VOLUME) / (double)(MAX_LCD_VOLUME - MIN_LCD_VOLUME) * 100;
				ShowProgress(2, percent);
			}
			break;

		case vk_ESC:
			LcdSetVolume(origin);
			return;

		case vk_ENTER:
			return;
		}
	}
}

// --------------------------------------------------------------------------
void onSelectMainMenu(int index)
{
	char buffer[100], ch;
	int len;
	int i;

	if (index < 0 || index >= sizeof(ImageList) / sizeof(GraphicsMenuItem)) return;

	clrscr();
	switch (index) {
	case 0: // 屏幕测试
		testGraphics();
    	break;

    case 1: // 键盘测试
		ShowMenu(&input_menu);
    	break;

    case 2: // 串口测试
		testRs232();
    	break;

    case 3: // 红外测试
		testIrda();
    	break;

    case 4: // IC卡测试
		ShowMenu(&card_menu);
    	break;

	case 5: // 文件系统测试
		ShowMenu(&fs_menu);
		break;
		
	case 6: // 机器设置
		ShowMenu(&sys_menu);
		break;

    case 7: // 关于
		DisplayLine(0, "关于", ALIGN_CENTER, false);
		ShowMemo(AboutThisProgram, sizeof(AboutThisProgram) / sizeof(char *), ALIGN_CENTER);
    	break;
    }
}

// Main menu OK handler
UINT onMainMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectMainMenu(pMenu->Current);
	return 0;
}

UINT onMainMenu_Cancel(void *arg)
{
	GraphicsMenu * pMenu = (GraphicsMenu *)arg;
	ShowComsysLogo("北京天石");
	DrawGraphicsMenu(pMenu);
}

UINT onMainMenu_OtherKey(void * arg)
{
	GraphicsMenu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectMainMenu(key - '1');
		DrawGraphicsMenu(pMenu);
	}

	return 0;
}

void onSelectSysMenu(int index)
{
	char str[100] = "1234";
	int len, object, level;

	if (index < 0 || index >= sizeof(sysMenuItems) / sizeof(char *)) return;

	clrscr();
	switch (index) {
	case 0:
		SetCurrentDate();
		break;
	case 1:
		SetCurrentTime();
		break;
	case 2:
		systemConfig(0);
		break;
	case 3:
		systemConfig(1);
		break;
	case 4:
		showBattery();
		break;
	case 5:
		adjustLcd();
		break;
	}
	clrscr();
}

UINT onSysMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectSysMenu(pMenu->Current);
	return 0;
}

UINT onSysMenu_Cancel(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) {
		CloseMenu(pMenu);
	}
	return 0;
}

UINT onSysMenu_OtherKey(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectSysMenu(key - '1');
		DrawMenu(pMenu);
	}

	return 0;
}

// Battery Menu
void onSelectBatteryMenu(int index)
{
	if (index < 0 || index >= sizeof(batteryMenuItems) / sizeof(char *)) return;

	clrscr();
	switch (index) {
	case 0:
		CollectBatteryValues();
		break;
	case 1:
		UploadBatteryValues();
		break;
	}
	clrscr();
}

UINT onBatteryMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectBatteryMenu(pMenu->Current);
	return 0;
}

UINT onBatteryMenu_Cancel(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) {
		CloseMenu(pMenu);
	}
	return 0;
}

UINT onBatteryMenu_OtherKey(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectBatteryMenu(key - '1');
		DrawMenu(pMenu);
	}

	return 0;
}

//
// Input Menu
void onSelectInputMenu(int index)
{
	char str[100];
	int len;

	if (index < 0 || index >= sizeof(inputMenuItems) / sizeof(char *)) return;

	clrscr();
	switch (index) {
	case 0:
		testKeyboard();
		break;
	case 1:
		testChinese();
		break;
	case 2:
		testInput();
		break;
	case 3:
		testInput2();
		break;
	}
	clrscr();
}

UINT onInputMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectInputMenu(pMenu->Current);
	return 0;
}

UINT onInputMenu_Cancel(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) {
		CloseMenu(pMenu);
	}
	return 0;
}

UINT onInputMenu_OtherKey(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectInputMenu(key - '1');
		DrawMenu(pMenu);
	}

	return 0;
}

// ------------------------------------------------------------------
void onSelectFsMenu(int index)
{
	if (index < 0 || index >= sizeof(fsMenuItems) / sizeof(char *)) return;

	clrscr();
	switch (index) {
	case 0:
		testCreateFile();
		break;
	case 1:
		testWriteFile();
		break;
	case 2:
		testReadFile();
		break;
	case 3:
		testDeleteFile();
		break;
	case 4:
		testFormatFlash();
		break;
	}
	clrscr();
}

UINT onFsMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectFsMenu(pMenu->Current);
	return 0;
}

UINT onFsMenu_Cancel(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) {
		CloseMenu(pMenu);
	}
	return 0;
}

UINT onFsMenu_OtherKey(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectFsMenu(key - '1');
		DrawMenu(pMenu);
	}

	return 0;
}
// ------------------------------------------------------------------

void onSelectCardMenu(int index)
{
	if (index < 0 || index >= sizeof(cardMenuItems) / sizeof(char *)) return;

	clrscr();
	switch (index) {
	case 0:
		testAt24c64();
		break;
	case 1:
		testAt45d();
		break;
	case 2:
		testSle4428();
		break;
	case 3:
		testSle4442();
		break;
	case 4:
		testAt1604();
		break;
	case 5:
		testAt1608();
		break;
	case 6:
		testCpuSamCard(CPU1);
		break;
	case 7:
		testCpuSamCard(SAM1);
		break;
	}
	clrscr();
}

UINT onCardMenu_Ok(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) onSelectCardMenu(pMenu->Current);
	return 0;
}

UINT onCardMenu_Cancel(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	if (pMenu) {
		CloseMenu(pMenu);
	}
	return 0;
}

UINT onCardMenu_OtherKey(void * arg)
{
	Menu * pMenu = (Menu *)arg;
	char key;

	if (pMenu) {
		key = pMenu->EventArg;
		onSelectCardMenu(key - '1');
		DrawMenu(pMenu);
	}

	return 0;
}

// COM1 SLP test
void testRs232()
{
	char ch, bufr[100];
	HDEV dev;

	if (ShowMessage("串口测试", "请运行PC超级终端波特率9600", MB_CANCEL | MB_OK, true) == MR_CANCEL)
		return;
		
	clrscr();
	dev = open(COM1, BAUD_9600);
	while ((ch = inkey()) != vk_ESC) {
		if (ch) {
			putch(ch);
			write(dev, 0, &ch, 1);
		}
		if (read(dev, 0, &ch, 1)) {
			putch(ch);
		}
	}
	close(dev);
}

// IRDA terminal (test with Windows 超级终端)
void testIrda()
{
	char ch, bufr[100];
	HDEV dev;

	if (ShowMessage("红外测试", "请运行PC超级终端波特率9600", MB_CANCEL | MB_OK, true) == MR_CANCEL)
		return;

	clrscr();		
	dev = open(IRDA, BAUD_9600);
	while ((ch = inkey()) != vk_ESC) {
		if (ch) {
			putch(ch);
			write(dev, 0, &ch, 1);
		}

⌨️ 快捷键说明

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