⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configpid.c

📁 采用MINIGUI开发的一套GUI界面
💻 C
📖 第 1 页 / 共 3 页
字号:
	 		SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
			}
		if(id==KEY_RIGHT) 
			{
			SendDlgItemMessage(hDlg, CPID_RIGHT, MSG_LBUTTONUP, 0,0);
			ctrl_pid_id=pid1_id_right[ctrl_pid_id-pid_page_ctrlid]; SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
			}
		if(id==KEY_UP) 
			{
			SendDlgItemMessage(hDlg, CPID_UP, MSG_LBUTTONUP, 0,0);
 			if(flag_entered)//按过ENTER后选择BOX里面内容
				{
				 SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
				index--;if(index<0)index=num-1;
				SendDlgItemMessage(hDlg,ctrl_pid_id,CB_SETCURSEL,index,0);				
				}		  
                   else 
                         	{
      				ctrl_pid_id=pid1_id_up[ctrl_pid_id-pid_page_ctrlid];
      				SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
      				}
			}
		if(id==KEY_DOWN) 
			{	
			SendDlgItemMessage(hDlg, CPID_DOWN, MSG_LBUTTONUP, 0,0);
 			if(flag_entered)//按过ENTER后选择BOX里面内容
     				{
     			 SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
				index++;if(index==num)index=0;
				SendDlgItemMessage(hDlg,ctrl_pid_id,CB_SETCURSEL,index,0);				
 				}	  
                    else 
                 	    {
          		   ctrl_pid_id=pid1_id_down[ctrl_pid_id-pid_page_ctrlid];			
            	 	     SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));				
            	           }
	 		}
			 if(id==KEY_ENTER){
			 	SendDlgItemMessage(hDlg, CPID_ENTER, MSG_LBUTTONUP, 0,0);
        			if(flag_entered) 
                 		{
               		flag_entered=0;
               		SetFocusChild( GetDlgItem(hDlg,ctrl_pid_id));
                		}
               		else
                          {//3        
                          		if((ctrl_pid_id==PID_ADDR)||
					((ctrl_pid_id>=PID_OUT1)&&(ctrl_pid_id<=PID_SV2))
					
					)
						 DigitalConfig (hDlg ); //弹出数字键盘
				else
     			   	{
                          	 SendDlgItemMessage(hDlg,ctrl_pid_id,MSG_KEYDOWN,SCANCODE_PAGEDOWN,0);
                          	flag_entered=1;
     				index=SendDlgItemMessage(hDlg,ctrl_pid_id,CB_GETCURSEL,0,0);
     			        num=SendDlgItemMessage(hDlg,ctrl_pid_id,CB_GETCOUNT,0,0);
                          	}
	 	 	}


				
				}
			 if(id==KEY_LAST){
			 	SendDlgItemMessage(hDlg, CPID_BOT_LEFT, BM_SETSTATE, 0,0);


				
				}
			 if(id==KEY_NEXT){
			 	SendDlgItemMessage(hDlg, CPID_BOT_RIGHT, BM_SETSTATE, 0,0);


				
				}
			 if(id==KEY_PARA){ 
				
			 	SendDlgItemMessage(hDlg, CP2_PAGE, BM_SETSTATE, 0,0);

		index2=SendDlgItemMessage (hDlg, IDC_PROPSHEET, 
                             PSM_GETACTIVEINDEX, 0, 0);
               index2=index2+1;
			   if(index2>5)index2=0;
                    SendDlgItemMessage (hDlg, IDC_PROPSHEET, 
                                    PSM_SETACTIVEPAGE, index2 , 0);
                	 		 	
				
				//InvalidateRect(hDlg,NULL,TRUE);
				}
			 if(id==KEY_CARD){
			 	// CARD KEY -> CLOSE PAGE 
				SendDlgItemMessage(hDlg, CP2_CARD, BM_SETSTATE, 0,0);			 	
			 	ShowPage1(hDlg);
	// 
//SendDlgItemMessage (hDlg, IDC_PROPSHEET, 
   //                             PSM_SETACTIVEPAGE, 0, 0);

	
		
//	  SendDlgItemMessage (hDlg, IDC_PROPSHEET, 
   //        PSM_REMOVEPAGE, 0, 0);
	//	InvalidateRect(hDlg,NULL,TRUE);

			 	}
 		 if(id==KEY_SET){
		 	ShowProp(hDlg);
				//SET THE PARA
			 	SendDlgItemMessage(hDlg, CP2_SET, BM_SETSTATE, 0,0);
			
				
		/*	  */
	//		
//			printf("i=%d\n",index2);
		


				
				//得到地址
				
				//得到波特率
				
				//发送通讯命令下去
				
			//endCmd(hDlg,ctrl_pid_id);
				//重新读取命令
				//更新页面
				
				}
			 if(id==KEY_RETURN){
			 	
			 	SendDlgItemMessage(hDlg, CPID_BOT_RETURN, BM_SETSTATE, 0,0);
				}

			}
 		 break;	
	case MSG_COMMAND:
       {
		if (id == EN_CHANGE)
			{
			 SetDlgItemText(hDlg, ctrl_pid_id,(unsigned char *)lParam);
			}
           if(id==CPID_DBACK)    
	   	       EndDialog (hDlg, 0);
		  if(id==CPID_BOT_RETURN)    
	   	       EndDialog (hDlg, 0);
	}
	break;
	case MSG_DESTROY:
		printf("CARDCOM timer keilled!/n");
		   KillTimer(hDlg,_ID_TIMER_CARDCOM); 
		DestroyAllControls(hDlg);
		break;
	case MSG_CLOSE:	

    		EndDialog (hDlg, 0);
		
		break;
    	}
   	 return DefaultDialogProc (hDlg, message, wParam, lParam);
    

}


void  DlgPIDConf (HWND hWnd)
{
    Dlg_PID.controls = ctrl_PID;
    
    DialogBoxIndirectParam (&Dlg_PID, hWnd, PIDDialogProc, 0L);
}



//建立 板卡第一个页面控件
void CreatePidCtrl1(HWND hWnd)
{int i;
    for(i=0; i<dim(pid_ctrl1);i++){
        		pid_ctrl1[i].hwndControl =  CreateWindow(
                 pid_ctrl1[i].spClassName,
		             pid_ctrl1[i].spCaption,
		             WS_CHILD|pid_ctrl1[i].dwStyle ,
		             pid_ctrl1[i].conID,
		             pid_ctrl1[i].conx,
		             pid_ctrl1[i].cony,
		             pid_ctrl1[i].conw,
		             pid_ctrl1[i].conh,
		             hWnd,
		     0);		
                 }

}
void ShowPidCtrl1(HWND hWnd)
{
	int i;
	for(i=0;i<dim(pid_ctrl1);i++) 
	   {
               ShowWindow(pid_ctrl1[i].hwndControl,SW_SHOW); 
     } 
}
void HidePidCtrl1(HWND hWnd)
{
	int i;
	for(i=0;i<dim(pid_ctrl1);i++) 
	   {
               ShowWindow(pid_ctrl1[i].hwndControl,SW_HIDE); 
     } 
}





/*
显示pid卡基本页面的信息
动态数据
报警情况

*/
void ShowPIDPage1(HWND hDlg,HDC hdc)
{
int  id;
unsigned char str[20];
unsigned char str_temp[20];
HDC hmemDC;

id=pid_id;
//
//隐藏上页面控件
//显示本页面控件
   hmemDC=hdc; 
   //  SetBrushColor(hmemDC,PIXEL_lightgray);//lightwhite
    SetBkMode(hmemDC,BM_TRANSPARENT);//?   SetBkMode
//设置字体颜色
	SetTextColor(hmemDC,PIXEL_black);  //矩形图TAG	   
	  SelectFont(hmemDC,songgb16font);
//读取流量板卡的信息
  //	strcpy(str_temp,"基本信息1/3");
//	TextOut(hmemDC,400,5,str_temp);
	TextOut(hmemDC,PID_X4,5,"通讯: 不存在");
	
	TextOut(hmemDC,PID_X1,PID_Y1+5,"名称  :");

	TextOut(hmemDC,PID_X3,PID_Y1,"通讯地址:");
	TextOut(hmemDC,PID_X3,PID_Y2,"工作方式");
//	if(card_pid_reg[pid_id].enabled)
//	else
//	TextOut(hmemDC,PID_X3+100,PID_Y1,"板卡不存在");

/*	TextOut(hmemDC,PID_X3,PID_Y5,"OP:工作方式");
	TextOut(hmemDC,PID_X3,PID_Y6,"LN:PV1分度类型");
	TextOut(hmemDC,PID_X3,PID_Y7,"KD:微分增益系数");
	TextOut(hmemDC,PID_X3,PID_Y8,"ASV:自整定提前量");

*/
TextOut(hmemDC,PID_X1,PID_Y2,"波特率:");

TextOut(hmemDC,PID_X1,PID_Y3,"回路1信号类型:");
TextOut(hmemDC,PID_X1,PID_Y4,"回路1控制方式");
TextOut(hmemDC,PID_X1,PID_Y5,"回路自整定");
TextOut(hmemDC,PID_X1,PID_Y6,"回路2信号类型");
TextOut(hmemDC,PID_X1,PID_Y7,"回路2控制方式");
TextOut(hmemDC,PID_X1,PID_Y8,"回路2输入限幅");


TextOut(hmemDC,PID_X3+10,PID_Y3,"回路1输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y4,"回路2输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y5,"回路3输出类型");
TextOut(hmemDC,PID_X3+10,PID_Y6,"回路1输出限幅");
TextOut(hmemDC,PID_X3+10,PID_Y7,"回路2输出限幅");
TextOut(hmemDC,PID_X3+10,PID_Y8,"回路3输出限幅");
TextOut(hmemDC,PID_X4+42,PID_Y6+15,"~");
TextOut(hmemDC,PID_X4+42,PID_Y7+15,"~");
TextOut(hmemDC,PID_X4+42,PID_Y8+15,"~");


TextOut(hmemDC,PID_X1,PID_Y9,"P1: 比例");
TextOut(hmemDC,PID_X1,PID_Y10,"I1: 积分");
TextOut(hmemDC,PID_X1,PID_Y11,"D1: 微分");

TextOut(hmemDC,PID_X3+10,PID_Y9,"P2: 比例");
TextOut(hmemDC,PID_X3+10,PID_Y10,"I2: 积分");
TextOut(hmemDC,PID_X3+10,PID_Y11,"D2: 微分");

/*
TextOut(hmemDC,PID_X3+10,PID_Y8,"AL1继电器状态:闭合");
TextOut(hmemDC,PID_X3+10,PID_Y9,"AL2继电器状态:断开");
TextOut(hmemDC,PID_X3+10,PID_Y10,"AL3继电器状态:断开");
TextOut(hmemDC,PID_X3+10,PID_Y11,"AL4继电器状态:断开");

  	strcpy(str,table_unit[card_pid_reg[pid_id].PV1]);
TextOut(hmemDC,PID_X1+140,PID_Y1,str);
	strcpy(str,table_unit[card_pid_reg[pid_id].DP]);
TextOut(hmemDC,PID_X1+140,PID_Y2,str);
	strcpy(str,table_unit[card_pid_reg[pid_id].DCA]);
TextOut(hmemDC,PID_X1+140,PID_Y3,str);
	strcpy(str,table_unit[card_pid_reg[pid_id].SV]);
TextOut(hmemDC,PID_X1+140,PID_Y4,str);
	strcpy(str,table_unit[card_pid_reg[pid_id].PV]);
TextOut(hmemDC,PID_X1+140,PID_Y5,str);
//给编辑框赋值
SetDlgItemText(hDlg, PID_NAME,card_pid_reg[id].name);


  SelectFont(hmemDC,songgb16font);
 //实时值
  	bzero(str,sizeof(str));
	 sprintf(str,"%.4f",card_pid_reg[pid_id].temperature);
       TextOut(hmemDC,PID_X1+40, PID_Y1, str); 
	 sprintf(str,"%.4f",card_pid_reg[pid_id].pressure);
       TextOut(hmemDC,PID_X1+40, PID_Y2, str); 
	 sprintf(str,"%.4f",card_pid_reg[pid_id].flux);
       TextOut(hmemDC,PID_X1+40, PID_Y3, str); 
	 sprintf(str,"%.4f",card_pid_reg[pid_id].instant_flux);
       TextOut(hmemDC,PID_X1+40, PID_Y4, str); 
//将	   Hcumul_flux,Lcumul_flux计算到cumul_flux
	card_pid_reg[pid_id].cumul_flux=(card_pid_reg[pid_id].Hcumul_flux)*(2^32)+(card_pid_reg[pid_id].Lcumul_flux);
	 sprintf(str,"%.4f",card_pid_reg[pid_id].cumul_flux);
       TextOut(hmemDC,PID_X1+40, PID_Y5, str); 
//报警状态
       if(card_pid_reg[pid_id].alarm1_status==1)
       	{
        FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y1 ,16,16,&staticbmp[0]);	//red				            					              
       	}
	   else 
        FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y1 ,16,16,&staticbmp[1]);	//green				            					              
       if(card_pid_reg[pid_id].alarm2_status==1)
       	{
        FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y2 ,16,16,&staticbmp[0]);	//red				            					              
       	}
	   else 
        FillBoxWithBitmap(hmemDC,PID_X2+120,PID_Y2 ,16,16,&staticbmp[1]);	//green				            					              
	   	
*/
 //TextOut(hmemDC,100,380,"提示:设置其他参数请按页面切换键.");

//给编辑框赋值
		SetDlgItemText(hDlg, PID_NAME,card_pid_reg[id].name);
		SetDlgItemInt(hDlg, PID_DL2,0,0);
	//	SetDlgItemInt(hDlg, PID_DH2,1999,0);

		SetDlgItemInt(hDlg, PID_OL1,0,0);
		SetDlgItemInt(hDlg, PID_OH1,100,0);
		
		SetDlgItemInt(hDlg, PID_OL2,0,0);
		SetDlgItemInt(hDlg, PID_OH2,100,0);

		SetDlgItemInt(hDlg, PID_DL1,0,0);
		SetDlgItemInt(hDlg, PID_DH1,100,0);

		SetDlgItemInt(hDlg, PID_P1,200,0);
		SetDlgItemInt(hDlg, PID_I1,100,0);
		SetDlgItemInt(hDlg, PID_D1,20,0);
		SetDlgItemInt(hDlg, PID_P2,200,0);
		SetDlgItemInt(hDlg, PID_I2,100,0);
		SetDlgItemInt(hDlg, PID_D2,20,0);

}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -