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 + -
显示快捷键?