📄 syscnfg.c
字号:
/*************************************************************************
*
* Copyright 2002 National ASIC Center, All rights Reserved
*
* FILE NAME: syscnfg.c
* PROGRAMMER: longn_qi
* Date of Creation: 2002/10/11
*
* DESCRIPTION:
*
* NOTE:
*
*
* FUNCTIONS LIST:
* -------------------------------------------------------------------------
*
* GLOBAL VARS LIST:
*
*
**************************************************************************
*
* MODIFICATION HISTORY
*
*
* 2002/10/11 by longn_qi Create the file
*
*************************************************************************/
#include <stdio.h>
#include <string.h>
#include <asixwin.h>
#include <asixapp.h>
#include <sys\lmalloc.h>
#include <sys\keydef.h>
#include <hardware\drball\pwm.h>
#include <hardware\drball\volt.h>
#include <asixwin\asix_lb.h>
#include <asixwin\select.h>
#include <resource\bitmap.h>
#include "syscnfg.h"
BYTE LcdCnfgValue[3] = { 3, 0, 0 };
BYTE AudioCnfgValue[7] = { 0, 0, 0, 0, 0, 0, 0 };
extern unsigned char UartCnfgValue[4];
extern void ConfigTP( void );
extern void ConfigLCD( void );
extern void ConfigSerials( void );
extern void ConfigAudio( void );
extern void ConfigGSM( void );
TASKDESCRIPTION CnfgTPTskDesp =
{"笔定位", ASIX_APP, 2, dingwei,4096, 1, LCD_WIDTH, LCD_HEIGHT, ConfigTP, APP_PRI};
TASKDESCRIPTION CnfgLCDTskDesp =
{"显示设置", ASIX_APP, 2, zi_display, 4096, 1, LCD_WIDTH, LCD_HEIGHT, ConfigLCD, APP_PRI};
TASKDESCRIPTION CnfgUARTTskDesp =
{"串口设置", ASIX_APP, 2, zi_chuankou, 4096, 1, LCD_WIDTH, LCD_HEIGHT, ConfigSerials, APP_PRI};
TASKDESCRIPTION CnfgAudioTskDesp =
{"声音设置", ASIX_APP, 2, zi_voice, 4096, 1, LCD_WIDTH, LCD_HEIGHT, ConfigAudio, APP_PRI};
TASKDESCRIPTION CnfgGSMTskDesp =
{"通信设置", ASIX_APP, 2, zi_tongxun, 4096, 1, LCD_WIDTH, LCD_HEIGHT, ConfigGSM, APP_PRI};
static void ConfigPromptSound( void );
// 触摸屏设置任务
void ConfigTP( void )
{
MSG msg;
msg.messageType = ASIX_MESSAGE;
msg.message = SM_PEN_CALIBRATION;
SysSendMessage( SYSTASK_ID, &msg );
EndofTask();
}
// 显示屏设置任务
void ConfigLCD( void )
{
MSG msg;
U8 quit = 0;
// U32 hGC;
// 窗口和控件ID
U32 mainwin; // 主窗口
U32 bt[3][2]; // 调节按键
U32 bt_ok; // 确定键
U32 bt_cancel; // 取消键
U32 st_prompt[3]; // 选项提示
U32 bt_value[3]; // 调节值提示
U32 tskbar; // 任务栏
U8 i;
U16 temp;
S8 *stcap[3] = { "对比度", "背光延时", "关屏延时" };
S8 value_str[3][6];
BYTE temp_value[3];
BYTE min_value[3] = { 0, 0, 0 };
BYTE max_value[3] = { 4, 0, 0 };
BYTE contrast_scale = ( MAX_CONTRAST - MIN_CONTRAST )/( max_value[0] - min_value[0] );
// WINDOW ARRANGEMENT
const U16 form_w = PHY_LCD_W, form_h = PHY_LCD_H, form_x = 0, form_y = 0;
const U16 st_w = LCD_WIDTH*1/5, st_h = LCD_HEIGHT/8, st_x = form_x + ITEM_GAP_W, st_y = form_y + 20 + ITEM_GAP_H;
const U16 bt_w = LCD_WIDTH/10, bt_h = 24, bt_x = st_x + 2*st_w + ITEM_GAP_W, bt_y = st_y;
const U16 st_w2 = LCD_WIDTH/3, st_x2 = bt_x + bt_w, bt_x2 = st_x2 + st_w2;
const U16 bt_w3 = (PHY_LCD_W-2)/2, bt_x3 = form_x + 1, bt_y3 = form_y + PHY_LCD_H - 20 - bt_h;
mainwin = CreateWindow( WNDCLASS_WIN,
"显示屏配置",
WS_OVERLAPPEDWINDOW,
form_x,form_y,
form_w,form_h,
0,
0,
NULL);
tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
temp = st_y;
for( i = 0; i < 3; i++ )
{
sprintf( value_str[i], "%d", LcdCnfgValue[i] );
temp_value[i] = LcdCnfgValue[i];
// 提示
st_prompt[i] = CreateWindow( WNDCLASS_STATIC,
stcap[i],
WS_CHILD | SS_TEXT | SS_RIGHT,
st_x,temp,
st_w,st_h,
mainwin,0,NULL);
// 减少键
bt[i][0] = CreateWindow( WNDCLASS_BUTTON,
NULL,//"-",
WS_CHILD | BS_ICON | BS_FLAT,
bt_x,temp+(st_h-bt_h)/2,
bt_w,bt_h,
mainwin,0,(char *)left10X10);
EnableFocus( bt[i][0], FALSE ); // 屏蔽焦点
// 设定值
bt_value[i] = CreateWindow( WNDCLASS_BUTTON,
value_str[i],
WS_CHILD | BS_BOARD | BS_FLAT,
st_x2,temp,
st_w2,st_h,
mainwin,0,NULL);
// 增加键
bt[i][1] = CreateWindow( WNDCLASS_BUTTON,
NULL,//"+",
WS_CHILD | BS_ICON | BS_FLAT,
bt_x2,temp+(st_h-bt_h)/2,
bt_w,bt_h,
mainwin,0,(char *)right10X10);
EnableFocus( bt[i][1], FALSE ); // 屏蔽焦点
temp += st_h + 16;
}
bt_ok = CreateWindow( WNDCLASS_BUTTON,
"确定",
WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
bt_x3,bt_y3,
bt_w3,bt_h,
mainwin,0,NULL);
bt_cancel = CreateWindow( WNDCLASS_BUTTON,
"取消",
WS_CHILD | BS_REGULAR | BS_FLAT | BS_BOARD,
(U16)(bt_x3 + bt_w3),bt_y3,
bt_w3,bt_h,
mainwin,0,NULL);
SetFocus( bt_value[0] );
while( !quit )
{
ASIXGetMessage( &msg, NULL, 0, 0 );
switch( msg.message )
{
case WM_COMMAND:
for( i = 0; i < 3; i++ )
{
if( msg.lparam == bt[i][0] )
{
// 减少值
if( temp_value[i] == min_value[i] )
break;
temp_value[i]--;
sprintf( value_str[i], "%d", temp_value[i] );
SetWindowText( bt_value[i], value_str[i], NULL );
if( GetFocus() != bt_value[i] )
SetFocus( bt_value[i] );
switch( i )
{
case 0: // 对比度调节
SetContrast( (U8)(MIN_CONTRAST + temp_value[i]*contrast_scale) );
break;
case 1: // 背光延时调节
break;
case 2: // 关屏延时调节
break;
}
break;
}
else if( msg.lparam == bt[i][1] )
{
// 增加值
if( temp_value[i] == max_value[i] )
break;
temp_value[i]++;
sprintf( value_str[i], "%d", temp_value[i] );
SetWindowText( bt_value[i], value_str[i], NULL );
if( GetFocus() != bt_value[i] )
SetFocus( bt_value[i] );
switch( i )
{
case 0: // 对比度调节
SetContrast( (U8)(MIN_CONTRAST + temp_value[i]*contrast_scale) );
break;
case 1: // 背光延时调节
break;
case 2: // 关屏延时调节
break;
}
break;
}
}
if( i == 3 )
{
if( msg.lparam == bt_ok )
{
// 保存设置
for( i = 0; i < 3; i++ )
{
LcdCnfgValue[i] = temp_value[i];
}
quit = 1;
}
else if( msg.lparam == bt_cancel )
{
// 恢复设置
SetContrast( (U8)(MIN_CONTRAST + LcdCnfgValue[0]*contrast_scale) );
quit = 1;
}
}
break;
case WM_KEYDOWN:
case WM_KEYUP:
// 切换焦点
for( i = 0; i < 3; i++ )
{
if( msg.lparam == bt_value[i] || msg.lparam == bt[i][0] || msg.lparam == bt[i][1] )
{
switch( msg.wparam )
{
case ASIX_KEY_UP:
if( i == 0 ) // 第一个
SetFocus( bt_value[2] );
else // 上移一个
SetFocus( bt_value[i-1] );
break;
case ASIX_KEY_DOWN:
if( i == 2) // 最后一个
SetFocus( bt_value[0] );
else // 下移一个
SetFocus( bt_value[i+1] );
break;
case ASIX_KEY_LEFT:
{
// 减少值
if( temp_value[i] == 0 )
break;
temp_value[i]--;
sprintf( value_str[i], "%d", temp_value[i] );
SetWindowText( bt_value[i], value_str[i], NULL );
}
break;
case ASIX_KEY_RIGHT:
{
// 增加值
//if( temp_value[i] == VALUE_MAX )
// break;
temp_value[i]++;
sprintf( value_str[i], "%d", temp_value[i] );
SetWindowText( bt_value[i], value_str[i], NULL );
}
break;
case ASIX_KEY_OK:
// 保存设置
for( i = 0; i < 3; i++ )
{
LcdCnfgValue[i] = temp_value[i];
}
quit = 1;
break;
case ASIX_KEY_CANCEL:
// 恢复设置
SetContrast( (U8)(MIN_CONTRAST + LcdCnfgValue[0]*contrast_scale) );
quit = 1;
break;
}
break;
}
}
break;
case WM_QUIT:
quit = 1;
break;
}
DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam);
}
DestroyWindow( mainwin );
EndofTask();
}
// 串口设置任务
void ConfigSerials( void )
{
MSG msg;
U8 quit = 0;
// U32 hGC;
// 窗口和控件ID
U32 mainwin; // 主窗口
U32 lb[4]; // 配置选项列表
U32 bt_ok; // 确定键
U32 bt_cancel; // 取消键
U32 st[4]; // 选项提示
U32 tskbar; // 任务栏
S8 *stcap[4] = { "速率", "数据位", "校验", "停止位" };
struct LBOX_ITEM lb_baud[] =
{
ICON_ENABLE, UNUNDERLINE, "38400",
ICON_ENABLE, UNUNDERLINE, "28800",
ICON_ENABLE, UNUNDERLINE, "19200",
ICON_ENABLE, UNUNDERLINE, "14400",
ICON_ENABLE, UNUNDERLINE, "9600",
ICON_ENABLE, UNUNDERLINE, "4800",
ICON_ENABLE, UNUNDERLINE, "1200",
ICON_ENABLE, UNUNDERLINE, "600",
ICON_ENABLE, UNUNDERLINE, "300",
ICON_END, UNUNDERLINE, NULL
};
struct LBOX_ITEM lb_data[] =
{
ICON_ENABLE, UNUNDERLINE, "8",
ICON_ENABLE, UNUNDERLINE, "7",
ICON_ENABLE, UNUNDERLINE, "6",
ICON_ENABLE, UNUNDERLINE, "5",
ICON_END, UNUNDERLINE, NULL
};
struct LBOX_ITEM lb_ck[] =
{
ICON_ENABLE, UNUNDERLINE, "无",
ICON_ENABLE, UNUNDERLINE, "偶",
ICON_ENABLE, UNUNDERLINE, "奇",
ICON_END, UNUNDERLINE, NULL
};
struct LBOX_ITEM lb_stp[] =
{
ICON_ENABLE, UNUNDERLINE, "1",
ICON_ENABLE, UNUNDERLINE, "1.5",
ICON_ENABLE, UNUNDERLINE, "2",
ICON_END, UNUNDERLINE, NULL
};
struct LBOX_ITEM *lb_cap[4];
U8 i;
U16 temp;
BYTE temp_value[4];
// WINDOW ARRANGEMENT
const U16 form_w = PHY_LCD_W, form_h = PHY_LCD_H, form_x = 0, form_y = 0;
const U16 st_w = 48, st_h = 24, st_x = form_x + 5, st_y = form_y + 20 + ( form_h - 72 - st_h * 5 )/2;
const U16 lb_w = LCD_WIDTH*1/2, lb_h = st_h, lb_x = st_x + st_w + 5, lb_y = st_y;
const U16 bt_w = (PHY_LCD_W-2)/2, bt_h = st_h, bt_x = form_x + 1, bt_y = form_y + PHY_LCD_H - 20 - bt_h;
lb_cap[0] = lb_baud;
lb_cap[1] = lb_data;
lb_cap[2] = lb_ck;
lb_cap[3] = lb_stp;
mainwin = CreateWindow( WNDCLASS_WIN,
"串口设置",
WS_OVERLAPPEDWINDOW,
form_x,form_y,
form_w,form_h,
0,
0,
NULL);
tskbar = CreateWindow(WNDCLASS_TSKBAR, NULL, WS_CHILD|TBS_TYPICAL, 0, 0, 0, 0,mainwin, 0, NULL);
temp = st_y;
for( i = 0; i < 4; i++ )
{
temp_value[i] = UartCnfgValue[i];
// 提示
st[i] = CreateWindow( WNDCLASS_STATIC,
stcap[i],
WS_CHILD | SS_TEXT | SS_RIGHT,
st_x,temp,
st_w,st_h,
mainwin,0,NULL);
// 选项
lb[i] = CreateWindow( WNDCLASS_LIST,
NULL,
WS_CHILD | BS_ICON,// | BS_REGULAR,
lb_x,temp,
lb_w,lb_h,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -