configai.c
来自「采用MINIGUI开发的一套GUI界面」· C语言 代码 · 共 793 行 · 第 1/2 页
C
793 行
/****************************************Copyright (c)**************************************************
** ARM LINUX Development Co.,LTD.
**
**--------------File Info-------------------------------------------------------------------------------
** File name: configai.c
** Last modified Date: 2006-12-11
** Last Version: 1.0
** Descriptions:
** 通道组态信息,与PV卡无关
所有这些信息存在system.conf中
**------------------------------------------------------------------------------------------------------
** Created by: Jacky Chen
** Created date: 2007-05-7
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <pwd.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <minigui/mgext.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/time.h>
#include <ctype.h>
#include "common.h"
#include "configai.h"
#include "fonts.h"
/*启动模拟AI*/
DLGTEMPLATE DlgDigitalAi =
{
WS_VISIBLE,//WS_BORDER | WS_CAPTION|
WS_EX_NONE,
0, TOP,WIDTH, HEIGHT-TOP,
"AI页面",
0, 0,
12+66 , NULL,
0
};
struct conAiitems
{
unsigned char name[6];
unsigned char describe[20];
unsigned char offvalue[5];
unsigned char gainvalue[5];
struct conAiitems *next;
};
unsigned char name[10];
int chan_id=1; //通道 id
int Unumber=421;
int no=0;
//下边按钮的左移操作
void ShiftLeft(HWND hDlg )
{
int i;
int id;
unsigned char str_num[10];
//保存本通道的信息
WriteChanInfo(hDlg);
//更换到下一通道的信息
SendMessage(GetDlgItem(hDlg,focus_ai_bn), BM_SETSTATE , 0 ,0);
focus_ai_bn--;
if(focus_ai_bn<AI_BN1)
{
ai_bn_page--;
if(ai_bn_page<0){ai_bn_page=ai_chan_sum/12;
focus_ai_bn=ai_chan_sum%12+AI_BN1;
}
else focus_ai_bn=AI_BN12;
for(i=0;i<12;i++){
if(i<=(focus_ai_bn-AI_BN1))sprintf(str_num,"%d",(i+1+ai_bn_page*12));
else sprintf(str_num," ");
SetDlgItemText(hDlg, (AI_BN1+i),str_num );
}
}
SendMessage(GetDlgItem(hDlg,focus_ai_bn), BM_SETSTATE , BST_PUSHED ,0);
bfresh_conf=1;
sprintf(topinfo,"组态AI AI%d ",(focus_ai_bn-AI_BN1+1+ai_bn_page*12));
ReadChanConf( hDlg);
}
//下边按钮的右移操作,响应通道递增情况下组态
void ShiftRight(HWND hDlg )
{
int i;
unsigned char str_num[10];
int id;
int pagemax;
BOOL flag=0;
//保存本通道的信息
WriteChanInfo(hDlg);
//更换到下一通道的信息
//if(id>gchannum) return 0;
pagemax=ai_chan_sum/12;
SendMessage(GetDlgItem(hDlg,focus_ai_bn), BM_SETSTATE , 0 ,0);
focus_ai_bn++;
id=(focus_ai_bn-AI_BN1+ai_bn_page*12);//现在的值
if(id>ai_chan_sum)//当右移时候大于最大值
{
focus_ai_bn=AI_BN1;
ai_bn_page=0;
for(i=0;i<12;i++){
if((pagemax>0)||((i<=ai_chan_sum%12)&&(pagemax==0)))
sprintf(str_num,"%d",(i+1+ai_bn_page*12));
else sprintf(str_num," " );
SetDlgItemText(hDlg, (AI_BN1+i),str_num );
}
}
if(focus_ai_bn>AI_BN12)
{
focus_ai_bn=AI_BN1;
ai_bn_page++;
if(ai_bn_page>ai_chan_sum/12)ai_bn_page=0;
for(i=0;i<12;i++){
if((ai_bn_page==pagemax)&&(i>ai_chan_sum%12))
sprintf(str_num," " );
else
sprintf(str_num,"%d",(i+1+ai_bn_page*12));
SetDlgItemText(hDlg, (AI_BN1+i),str_num );
}
}
SendMessage(GetDlgItem(hDlg,focus_ai_bn), BM_SETSTATE , BST_PUSHED ,0);
bfresh_conf=1;
id=(focus_ai_bn-AI_BN1+ai_bn_page*12);//现在的值
sprintf(topinfo,"组态AI AI%d ",id+1);
//读出下一通道的信息
ReadChanConf( hDlg);
}
void ShiftLastPage(HWND hDlg)
{
ai_bn_page--;
if(ai_bn_page<0)ai_bn_page=4;
//
}
void ShiftNextPage(HWND hDlg)
{
ai_bn_page++;
if(ai_bn_page>4)ai_bn_page=0;
// for(i=0;i<12;i++){
// sprintf(str_num,"%d",(1+i+ai_bn_page*12));
// SetDlgItemText(hDlg, (AI_BN1+i),str_num );
// }
}
int EventAiDialogProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HWND hWnd1;
int nc;
int id;
HDC hdc,hmemDC;
static int ctrl_ai_id;//按键ID号或者是文本焦点号码
static int index;
static int num ;
static BOOL flag_entered;
unsigned char str_num[10];
int i;
id= LOWORD (wParam);//控件编号
nc=HIWORD(wParam); //控件通知码
switch (message)
{
case MSG_INITDIALOG:
b_ai_close=0;
b_di_close=0;
b_math_close=0;
bdi_dlg=0;
bmath_dlg=0;
ConfAiInit(hDlg);
SendDlgItemMessage(hDlg, AI_BN1, BM_SETSTATE , BST_PUSHED ,0);
SetFocusChild( GetDlgItem(hDlg,AI_EDIT_NAME));
ctrl_ai_id=AI_EDIT_NAME;
return 1;
case MSG_PAINT:
hdc = BeginPaint(hDlg);
// hmemDC=hdc;
hmemDC=CreateCompatibleDC(hdc);
SetBrushColor(hmemDC,PIXEL_black);//lightwhite
SetBkMode(hmemDC,BM_TRANSPARENT);//? SetBkMode
SetTextColor(hmemDC,PIXEL_lightgray);
SelectFont(hmemDC,lgfont_11); //设置字体
TextOut(hmemDC,180,170,"pt100");
BitBlt(hmemDC,0,0,WIDTH-LEFT,HEIGHT-TOP-BOTTOM,hdc,LEFT,0,0);
DeleteCompatibleDC(hmemDC);
//----------------------------------
//重新更新TOP栏目,TEST
// dis=SecondsToTime(start_sec);
//printf("/n%s/n",dis);
// sprintf(topinfo,"历史%s", dis);
EndPaint(hDlg,hdc);
return 0;
case MSG_SHOWWINDOW :
if(b_ai_close)
{
b_ai_close=0;
EndDialog (hDlg, 0);
}
case MSG_KEYDOWN:
if(!keydowned)
{
if(id==KEY_LEFT)SendDlgItemMessage(hDlg, CONF_AI_LEFT, MSG_LBUTTONDOWN, 0,0);
if(id==KEY_RIGHT)SendDlgItemMessage(hDlg, CONF_AI_RIGHT, MSG_LBUTTONDOWN, 0,0);
if(id==KEY_UP)SendDlgItemMessage(hDlg, CONF_AI_UP, MSG_LBUTTONDOWN, 0,0);
if(id==KEY_DOWN)SendDlgItemMessage(hDlg, CONF_AI_DOWN , MSG_LBUTTONDOWN, 0,0);
if(id==KEY_ENTER)SendDlgItemMessage(hDlg, CONF_AI_ENTER, MSG_LBUTTONDOWN, 0,0);
if(id==KEY_DLEFT)SendDlgItemMessage(hDlg, CONF_AI_DLEFT, BM_SETSTATE, BST_PUSHED,0);
if(id==KEY_DRIGHT)SendDlgItemMessage(hDlg, CONF_AI_DRIGHT, BM_SETSTATE, BST_PUSHED,0);
if(id==SCANCODE_F5)SendDlgItemMessage(hDlg, CONF_AI_DAI, BM_SETSTATE , BST_PUSHED ,0);
if(id==SCANCODE_F6)
SendDlgItemMessage(hDlg, CONF_AI_DDI, BM_SETSTATE , BST_PUSHED ,0);
if(id==SCANCODE_F7)SendDlgItemMessage(hDlg, CONF_AI_DMATH, BM_SETSTATE , BST_PUSHED ,0);
keydowned=1;
}
break;
case MSG_KEYUP:
keydowned=0;
if(id==KEY_EXIT) EndDialog (hDlg, 0);
if(id==KEY_CONF)
{
disp_mode=CONFIG_MODE;
bfresh_conf=1;
EndDialog (hDlg, 0);
}
if(id==KEY_MODE)
{
disp_mode=PACT_MODE;//GetHosting(hDlg),MSG_COMMAND
EndDialog (hDlg, 0);
}
if(id==KEY_LEFT)
{
SendDlgItemMessage(hDlg, CONF_AI_LEFT, MSG_LBUTTONUP, 0,0);
ctrl_ai_id=ai_id_left[ctrl_ai_id-TXT_FIRST];
//printf("ctrl_ai_id=%d",ctrl_ai_id);
SetFocusChild( GetDlgItem(hDlg,ctrl_ai_id));
}
if(id==KEY_RIGHT)
{
SendDlgItemMessage(hDlg, CONF_AI_RIGHT, MSG_LBUTTONUP, 0,0);
ctrl_ai_id=ai_id_right[ctrl_ai_id-TXT_FIRST];
SetFocusChild( GetDlgItem(hDlg,ctrl_ai_id));
}
if(id==KEY_UP)
{
SendDlgItemMessage(hDlg, CONF_AI_UP, MSG_LBUTTONUP, 0,0);
if(flag_entered)//按过ENTER后选择BOX里面内容
{
SendDlgItemMessage(hDlg,ctrl_ai_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
index--;if(index<0)index=num-1;
SendDlgItemMessage(hDlg,ctrl_ai_id,CB_SETCURSEL,index,0);
}
else
{
ctrl_ai_id=ai_id_up[ctrl_ai_id-AI_EDIT_NAME];
SetFocusChild( GetDlgItem(hDlg,ctrl_ai_id));
}
}
if(id==KEY_DOWN)
{
SendDlgItemMessage(hDlg, CONF_AI_DOWN, MSG_LBUTTONUP, 0,0);
if(flag_entered)//按过ENTER后选择BOX里面内容
{
SendDlgItemMessage(hDlg,ctrl_ai_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
index++;if(index==num)index=0;
SendDlgItemMessage(hDlg,ctrl_ai_id,CB_SETCURSEL,index,0);
}
else
{
ctrl_ai_id=ai_id_down[ctrl_ai_id-AI_EDIT_NAME];
SetFocusChild( GetDlgItem(hDlg,ctrl_ai_id));
}
}
if(id==KEY_ENTER)
{
SendDlgItemMessage(hDlg, CONF_AI_ENTER, MSG_LBUTTONUP, 0,0);
//判断是否为需要输入数字的编辑框
if(flag_entered)
{
flag_entered=0;
SetFocusChild( GetDlgItem(hDlg,ctrl_ai_id));
}
else
{
if(((ctrl_ai_id<=AI_EDIT_HIGH)&&(ctrl_ai_id>=AI_EDIT_LOW))||((ctrl_ai_id>=AI_EDIT_SET1)&&(ctrl_ai_id<=AI_EDIT_SET4)))
DigitalConfig (hDlg ); //弹出数字键盘
else if(ctrl_ai_id==AI_EDIT_DESC)
FormationDlg(hDlg );//进入公式输入键盘
else
{
SendDlgItemMessage(hDlg,ctrl_ai_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
flag_entered=1;
index=SendDlgItemMessage(hDlg,ctrl_ai_id,CB_GETCURSEL,0,0);
num=SendDlgItemMessage(hDlg,ctrl_ai_id,CB_GETCOUNT,0,0);
}
}
}
if(id==KEY_DLEFT)
{
SendDlgItemMessage(hDlg,CONF_AI_DLEFT , BM_SETSTATE, 0,0);
ShiftLeft(hDlg);
}
if(id==KEY_DRIGHT)
{
SendDlgItemMessage(hDlg,CONF_AI_DRIGHT , BM_SETSTATE, 0,0);
ShiftRight(hDlg);
}
if(id==SCANCODE_F5)
SendDlgItemMessage(hDlg, CONF_AI_DAI, BM_SETSTATE , 0 ,0);
if(id==SCANCODE_F6)
{SendDlgItemMessage(hDlg, CONF_AI_DDI, BM_SETSTATE , 0 ,0);
SendMessage(hDlg,MSG_COMMAND,CONF_AI_DDI,0);}
if(id==SCANCODE_F7)
{SendDlgItemMessage(hDlg, CONF_AI_DMATH, BM_SETSTATE , 0 ,0);
SendMessage(hDlg,MSG_COMMAND,CONF_AI_DMATH,0);}
break;
case MSG_COMMAND:
{
if((TXT_FIRST<id<TXT_MAX)&&(nc==EN_CLICKED))//被设置了焦点
{
ctrl_ai_id=GetDlgCtrlID(GetFocusChild(hDlg));
}
if (id == EN_CHANGE)
{
SetDlgItemText(hDlg, ctrl_ai_id,(unsigned char *)lParam);
}
if (id == BN_CLICKED)
{
}
if(id==AI_BNLEFT){
//ShiftNextPage(hDlg);
} //sprintf(str_num,"%d",(i+1+mathbn_page*12));
// if(id==AI_BNRIGHT){
//ShiftLastPage(hDlg);}
//点击底端右移键
// if(id==CONF_AI_DRIGHT)
//ShiftRight(hDlg );
//点击底端左移键
// if(id==CONF_AI_DLEFT)
// ShiftLeft(hDlg);
if(id==CONF_AI_DDI){
if(!bdi_dlg) DlgConfDi( hDlg);
else {bai_dlg=0;EndDialog (hDlg, 0);}
}
//SendMessage(gMainWnd,MSG_BUTTONCOMMAND,33,0L);
if(id==CONF_AI_DMATH) {
if(!bmath_dlg)DlgConfMath( hDlg);
else {bai_dlg=0;EndDialog (hDlg, 0);}
}
if(id==CONF_AI_DBACK)
{bai_dlg=0;
WriteChanInfo(hDlg);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?