金牌会员
- 积分
- 1276
- 金钱
- 1276
- 注册时间
- 2016-5-31
- 在线时间
- 499 小时
|
发表于 2020-12-4 23:12:45
|
显示全部楼层
/****************************************************************************
* 功 能: TFT28温控器----通过面板按键设置设定温度数值函数
*---------------------------------------------------------------------------*
* 入口参数: hDlg----窗口句柄
* 出口参数: nil
****************************************************************************/
void MainKey_TempValve_Set(void)
{
WM_HWIN hDlg;
WM_HWIN hItem;
if(flag_mChannle_sel==0){ //1路温控器
hDlg=TCtrl_One_hWin;
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
WM_SetFocus(hItem);
EDIT_SetBkColor(hItem,EDIT_CI_ENABLED,GUI_RED);
EDIT_SetTextColor(hItem,0,GUI_WHITE);
}else if(flag_mChannle_sel==1){ //2路温控器
hDlg=TCtrl_Two_hWin;
if(set_posn_index==1){
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
}else if(set_posn_index==2){
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1);
}
WM_SetFocus(hItem);
EDIT_SetBkColor(hItem,EDIT_CI_ENABLED,GUI_RED);
EDIT_SetTextColor(hItem,0,GUI_WHITE);
}else{ //3路温控器
hDlg=TCtrl_hWin;
if(set_posn_index==1){
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
}else if(set_posn_index==2){
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1);
}else if(set_posn_index==3){
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT2);
}
WM_SetFocus(hItem);
EDIT_SetBkColor(hItem,EDIT_CI_ENABLED,GUI_RED);
EDIT_SetTextColor(hItem,0,GUI_WHITE);
}
}
static void _cbCallback(WM_MESSAGE * pMsg)
{
int NCode, Id;
u8 i;
float temp_ft;
float power_ft;
WM_HWIN hItem;
WM_HWIN hDlg = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_TOUCH:
break;
case WM_PID_STATE_CHANGED: /
break;
case UPDATE_MSG_TEMPONE:
OS_ENTER_CRITICAL();
temp_ft=get_ADC.f_val[0]; //显示当前的温度值
OS_EXIT_CRITICAL();
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT3); //实际温度
EDIT_SetText(hItem,Tempts_Display_nDot(temp_ft,2-flag_ParamSet[1],0)); //n位小数点
break;
}
}
void TFT28_1Ch_MainFrame(void)
{
TCtrl_One_hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
WM_SetFocus(WM_GetDialogItem(TCtrl_One_hWin, GUI_ID_BUTTON2));
}
/****************************************************************************
* 功 能: TFT28温控器:设定数值范围判定----函数
*---------------------------------------------------------------------------*
* 入口参数: selt_t: 增/减选择;
* val_t : 增减的数值
* chl : 哪一路数值
* 出口参数: nil
****************************************************************************/
void SetValue_RangeJudge(u8 sel_t,float val_t,u8 chl)
{
if(chl>2) return; //最多3路[0~2]
if(sel_t==0){
if(ftemp_setVal[chl]<400.0f){ //设置范围[-100.0~+400.0f]
ftemp_setVal[chl]+=val_t;
}
}else{
if(ftemp_setVal[chl]>-100.0f){ //设置范围[-100.0~+400.0f]
ftemp_setVal[chl]-=val_t;
}
}
}
/****************************************************************************
* 功 能: TFT28温控器设定的温度数值显示------函数
*---------------------------------------------------------------------------*
* 入口参数: nil
* 出口参数: nil
****************************************************************************/
void TempValve_Set_Display(u8 sel_t,float val_t)
{
WM_HWIN hDlg;
WM_HWIN hItem;
if(flag_mChannle_sel==0){ //1路温控器
hDlg=TCtrl_One_hWin;
SetValue_RangeJudge(sel_t,val_t,0);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[0],0)); //2位小数点
}else if(flag_mChannle_sel==1){ //2路温控器
hDlg=TCtrl_Two_hWin;
if(set_posn_index==1){
SetValue_RangeJudge(sel_t,val_t,0);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[0],0)); //2位小数点
}else if(set_posn_index==2){
SetValue_RangeJudge(sel_t,val_t,1);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[1],0)); //2位小数点
}
}else{ //3路温控器
hDlg=TCtrl_hWin;
if(set_posn_index==1){
SetValue_RangeJudge(sel_t,val_t,0);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[0],0)); //2位小数点
}else if(set_posn_index==2){
SetValue_RangeJudge(sel_t,val_t,1);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT1);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[1],0)); //2位小数点
}else if(set_posn_index==3){
SetValue_RangeJudge(sel_t,val_t,2);
hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT2);
EDIT_SetText(hItem,Float_Display_only(ftemp_setVal[2],0)); //2位小数点
}
}
}
void Task_KeyFunc_Process(void *p_arg)
{
u8 disp_key_num=0;
(void)p_arg;
while(1)
{
if(Key1_Detect_Input()==0){ //外部实体按键: DISP按键
//......
//.......
}
if(Key2_Detect_Input()==0){ //外部实体按键: CH按键
//......
//.......
}
if(Key3_Detect_Input()==0){ //DOWN按键----数值设置
//
}
if(Key4_Detect_Input()==0){ // UP按键-----数值设置
OSTimeDly(50); //延时消除抖动
if(Key4_Detect_Input()==0){
if(set_posn_index>0){
add_speed=0;//clear
TempValve_Set_Display(0,0.1f); //修改: 温度设定数值
OSTimeDly (100);
}else{
//.......其他功能设定
}
} //if(Key4_Detect_Input()==0)
do{ //等待按键抬起
if(set_posn_index>0){
add_speed++;
OSTimeDly (30);
if(Key4_Detect_Input()==0){
if(add_speed<30){
TempValve_Set_Display(0,0.1f);
}else{
add_speed=30;
TempValve_Set_Display(0,1.0f);
}
}
}else{
OSTimeDly (20);
disp_key_num++;
if(disp_key_num>50){ //超时自动退出
break;
}
}
}while(Key4_Detect_Input()==0);
}
if(Key5_Detect_Input()==0){ //外部实体按键: ENT按键
OSTimeDly(50); //延时消除抖动
if(Key5_Detect_Input()==0){
if(set_posn_index==0){
set_posn_index=1;
//得到原来的温度设定数值
ftemp_setVal[0]=globle_pst[0].SetPoint;
ftemp_setVal[1]=globle_pst[1].SetPoint;
ftemp_setVal[2]=globle_pst[2].SetPoint;
}
if(set_posn_index>0){
MainKey_TempValve_Set();
}
}
do{ //等待按键抬起
OSTimeDly (20);
disp_key_num++;
if(disp_key_num>50){ //超时自动退出
break;
}
}while(Key5_Detect_Input()==0);
}
disp_key_num=0; //clear
OSTimeDly (100);
}
}
//请参看如下的实际产品--------操作说明
TFT28彩屏温控器_单路_-操作说明.pdf
(258.76 KB, 下载次数: 18)
|
|