📄 main.c
字号:
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 + -