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

📄 configpid.c

📁 采用MINIGUI开发的一套GUI界面
💻 C
📖 第 1 页 / 共 3 页
字号:
/*


defined in PID.h
//双路PID卡
  cpid_id  ;//PID卡id,表示当前操作的流量卡
  cpid_n ;//PID卡总数
   comm_addr;//通讯时候的地址
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <pwd.h>
#include <math.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/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "common.h"
#include "configpid.h"
#include "serial.h"
#include "meter.h"
#include "fonts.h"
const unsigned char * table_BT2[]={"1200","2400","4800","9600","19200","38400"};
const unsigned char * table_AF[]={"绝对值上限",
	"绝对值下限","上偏差","下偏差",
	"偏差内","偏差外","带回差上","带回差下",
	"时间比例控制"};

const unsigned char * table_OP[]={"单回路阀位","单回路跟踪",
	"双回路独立","双回路串接","双回路一路" };
const unsigned char * table_LN[]={
	"铂30-铂铑6","铂铑10-铂","铜-糠铜",
	"铂铑13-铂","钨铼3-钨铼25","铁-糠铜",
	"镍铬-糠铜","Pt100","Pt100.0-",
	"Cu50.0","Cu100.0","30-350Ω",
	"0-10mA","4-20mA","0-5.0V","1.0-5.0V"
};
const unsigned char * table_TYPE2[]={

	"0-10mA","4-20mA","0-5.0V","1.0-5.0V"
};
const unsigned char * table_BBB[]={
	"连续PID","断续PID"
};
const unsigned char * table_CCC[]={
	"连续PID","断续PID"
};
const unsigned char * table_OP11[]={
	"4-20mA","0-10mA"
};

//填充初始化信息
void InitPIDCard(HWND hDlg)
{
int i;
int id;
unsigned char str[20];
   //板卡不存在时候
   pid_id=0;
   id=pid_id;
   if(pid_dev_num>0)
   	{
   	
   	card_pid_reg=(CARDPIDINFO *)malloc(pid_dev_num*sizeof(CARDPIDINFO));
	card_pid_reg[id].enabled=1;
   	card_pid_reg[id].dev_addr=2;//devicesinfo[PidReged[pid_id]].dev_addr;
   	card_pid_reg[id].dev_borate=devicesinfo[PidReged[pid_id]].boudrate;
   	}

   	else {
	card_pid_reg=(CARDPIDINFO *)malloc(1*sizeof(CARDPIDINFO));
	card_pid_reg[id].enabled=0;
	card_pid_reg[id].dev_addr=1;
   	card_pid_reg[id].dev_borate=4800;
   		}
/*	 
//第一页	
      card_pid_reg[id].temperature=100;
      card_pid_reg[id].pressure  =100;
      card_pid_reg[id].flux=100;
      card_pid_reg[id].instant_flux=100;
      card_pid_reg[id].Hcumul_flux=100;
      card_pid_reg[id].Lcumul_flux=100;
      card_pid_reg[id].alarm1_status=0;
      card_pid_reg[id].alarm2_status  =0;    


	  
 //第2页	    
	card_pid_reg[id].K1=100;
      card_pid_reg[id].K2=100;
      card_pid_reg[id].K3=100;
      card_pid_reg[id].K4=200;
      card_pid_reg[id].A1=1;
      card_pid_reg[id].A2=1;

 	 card_pid_reg[id].P=0.928;
      card_pid_reg[id].P20=1.091;
       card_pid_reg[id].PA=1.601;
 
 //第三页
      card_pid_reg[id].C1=0;
      card_pid_reg[id].C2=1;
      card_pid_reg[id].C3=4;
      card_pid_reg[id].C4=2;
      card_pid_reg[id].C5=2;
      card_pid_reg[id].C6=2;
 
 	
      card_pid_reg[id].DCA=19;
      card_pid_reg[id].PV=16;
	  
      card_pid_reg[id].DT=7;
      card_pid_reg[id].DP=3;
      card_pid_reg[id].SV=15;
*/


	  
	  strcpy(card_pid_reg[id].name,"双路PID卡SF1");
 //为BOX框填充内容
 //table_B1[card_pid_reg[pid_id].B1]
 	
 
        for(i=0;i<dim(table_BT2);i++)
	       SendDlgItemMessage(hDlg,PID_BT,CB_ADDSTRING,0, (LPARAM)table_BT2[i]) ;
        for(i=0;i<dim(table_OP);i++)
	       SendDlgItemMessage(hDlg,PID_OP,CB_ADDSTRING,0, (LPARAM)table_OP[i]) ;


        for(i=0;i<dim(table_LN);i++)
	       SendDlgItemMessage(hDlg,PID_LN,CB_ADDSTRING,0, (LPARAM)table_LN[i]) ;
        for(i=0;i<dim(table_BBB);i++)
	       SendDlgItemMessage(hDlg,PID_BBB,CB_ADDSTRING,0, (LPARAM)table_BBB[i]) ;
		for(i=0;i<dim(table_OP);i++)
	       SendDlgItemMessage(hDlg,PID_OP,CB_ADDSTRING,0, (LPARAM)table_OP[i]) ;
        for(i=0;i<dim(table_TYPE2);i++)
	       SendDlgItemMessage(hDlg,PID_LN2,CB_ADDSTRING,0, (LPARAM)table_TYPE2[i]) ;
        for(i=0;i<dim(table_CCC);i++)
	       SendDlgItemMessage(hDlg,PID_CCC,CB_ADDSTRING,0, (LPARAM)table_CCC[i]) ;
        for(i=0;i<dim(table_OP11);i++)
	       SendDlgItemMessage(hDlg,PID_OP11,CB_ADDSTRING,0, (LPARAM)table_OP11[i]) ;
        for(i=0;i<dim(table_OP11);i++)
	       SendDlgItemMessage(hDlg,PID_OP12,CB_ADDSTRING,0, (LPARAM)table_OP11[i]) ;
        for(i=0;i<dim(table_OP11);i++)
	       SendDlgItemMessage(hDlg,PID_OP13,CB_ADDSTRING,0, (LPARAM)table_OP11[i]) ;
//属性页
        for(i=0;i<(dim(table_AF)-1);i++)
        	{
	       SendDlgItemMessage(hDlg,PID_AF1,CB_ADDSTRING,0, (LPARAM)table_AF[i]) ;
	       SendDlgItemMessage(hDlg,PID_AF2,CB_ADDSTRING,0, (LPARAM)table_AF[i]) ;
	 //      SendDlgItemMessage(hDlg,PID_AF3,CB_ADDSTRING,0, (LPARAM)table_AF[i]) ;
	   //    SendDlgItemMessage(hDlg,PID_AF4,CB_ADDSTRING,0, (LPARAM)table_AF[i]) ;
        	}
	       SendDlgItemMessage(hDlg,PID_AF2,CB_ADDSTRING,0, (LPARAM)table_AF[8]) ;
		   strcpy(str,"正转");
	       SendDlgItemMessage(hDlg,PID_AF3,CB_ADDSTRING,0, (LPARAM)str) ;
		      strcpy(str,"反转");
	    SendDlgItemMessage(hDlg,PID_AF4,CB_ADDSTRING,0, (LPARAM)str);

		
 //SendDlgItemMessage(hDlg,CT2_B1,CB_SETCURSEL,2,0);
		
}




//参数页面切换



//属性字页面1
static int 
PageProc1 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hmemDC;
    switch (message) {
    case MSG_INITPAGE:
        break;
		   case MSG_PAINT:
		   		{
	   		hmemDC = BeginPaint(hDlg); 
    SetBkMode(hmemDC,BM_TRANSPARENT);//?   SetBkMode
	SetTextColor(hmemDC,PIXEL_black);  //矩形图TAG	   
	  SelectFont(hmemDC,songgb16font);
	TextOut(hmemDC,PID1_X1,PID1_Y1-30,"工作方式:单回路阀位调节器");
		
	TextOut(hmemDC,PID1_X1,PID1_Y1,"PV1过程值:   ");
	TextOut(hmemDC,PID1_X3,PID1_Y1,"PV2阀位反馈值:   ");	
	TextOut(hmemDC,PID1_X1,PID1_Y2,"继电器状态:  继电器1:关闭     继电器2:关闭");
	TextOut(hmemDC,PID1_X1,PID1_Y3,"AM1自动控制:");

	TextOut(hmemDC,PID1_X1,PID1_Y4,"SV1控制设定:");
	TextOut(hmemDC,PID1_X3,PID1_Y4,"SV2回路1输出:");	
	TextOut(hmemDC,PID1_X1,PID1_Y5 ,"AL1:报警设定:");
	TextOut(hmemDC,PID1_X1,PID1_Y6 ,"AL3:不灵敏区设定:");
	TextOut(hmemDC,PID1_X1,PID1_Y7 ,"OUT1控制输出:");

	//TextOut(hmemDC,PID1_X3,PID1_Y4 ,"SV2控制设定:");
	TextOut(hmemDC,PID1_X3,PID1_Y5 ,"AL2:报警设定:");
	TextOut(hmemDC,PID1_X3,PID1_Y6 ,"AL4:过载设定:");
	TextOut(hmemDC,PID1_X3,PID1_Y7 ,"OUT2控制输:");
	
	TextOut(hmemDC,PID1_X1,PID1_Y8 ,"AF1:继电器1方式");
	TextOut(hmemDC,PID1_X1,PID1_Y9 ,"AF2:继电器2方式");
	TextOut(hmemDC,PID1_X1,PID1_Y10,"AF3:继电器3方式");
	TextOut(hmemDC,PID1_X1,PID1_Y11,"AF4:继电器4方式");

		     	EndPaint(hDlg,hmemDC);
		   	}
	    break;
    case MSG_SHOWPAGE:
			 


        return 1;

    case MSG_SHEETCMD:
        if (wParam == IDOK) {
        //    char buffer [20];
         //   GetDlgItemText (hDlg, IDC_EDIT1, buffer, 18);
        //    buffer [18] = '\0';

        }
        return 0;

    case MSG_COMMAND:
        switch (wParam) {
        case IDOK:
        case IDCANCEL:
            MessageBox (hDlg, "Button pushed", "OK", 
                            MB_OK | MB_ICONINFORMATION | MB_BASEDONPARENT);
            break;
        }
        break;
    }
    
    return DefaultPageProc (hDlg, message, wParam, lParam);
}


//属性字页面2
static int 
PageProc2 (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hmemDC;
    switch (message) {
    case MSG_INITPAGE:
        break;
    case MSG_SHOWPAGE:
        return 1;
   case MSG_PAINT:
		   		{
	   		hmemDC = BeginPaint(hDlg); 
    SetBkMode(hmemDC,BM_TRANSPARENT);//?   SetBkMode
	SetTextColor(hmemDC,PIXEL_black);  //矩形图TAG	   
	  SelectFont(hmemDC,songgb16font);
	  
TextOut(hmemDC,PID1_X1,PID1_Y1-30,"工作方式:单回路跟踪调节器");

	TextOut(hmemDC,PID1_X1,PID1_Y1,"PV1过程值:   ");
	TextOut(hmemDC,PID1_X3,PID1_Y1,"PV2外给定值:   ");	
	
	TextOut(hmemDC,PID1_X1,PID1_Y2,"继电器状态:  继电器1:关闭     继电器2:关闭");
	TextOut(hmemDC,PID1_X1,PID1_Y3,"AM1自动控制:");


	
	TextOut(hmemDC,PID1_X1,PID1_Y8 ,"AF1:继电器1方式");
	TextOut(hmemDC,PID1_X3,PID1_Y8 ,"AF2:继电器2方式");

		     	EndPaint(hDlg,hmemDC);
		   	}
	    break;
    case MSG_SHEETCMD:
        if (wParam == IDOK) {
        //    char buffer [20];
         //   GetDlgItemText (hDlg, IDC_EDIT1, buffer, 18);
        //    buffer [18] = '\0';

        }
        return 0;

    case MSG_COMMAND:
        switch (wParam) {
        case IDOK:
        case IDCANCEL:
            MessageBox (hDlg, "Button pushed", "OK", 
                            MB_OK | MB_ICONINFORMATION | MB_BASEDONPARENT);
            break;
        }
        break;
    }
    
    return DefaultPageProc (hDlg, message, wParam, lParam);
}


//属性字页面3
static int 
PageProc3(HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hmemDC;
    switch (message) {
    case MSG_INITPAGE:
        break;
    case MSG_SHOWPAGE:
        return 1;
   case MSG_PAINT:
		   		{
	   		hmemDC = BeginPaint(hDlg); 
    SetBkMode(hmemDC,BM_TRANSPARENT);//?   SetBkMode
	SetTextColor(hmemDC,PIXEL_black);  //矩形图TAG	   
	  SelectFont(hmemDC,songgb16font);
	  
TextOut(hmemDC,PID1_X1,PID1_Y1-30,"工作方式2:双回路独立调节器");

	TextOut(hmemDC,PID1_X1,PID1_Y1,"PV1被控对象1实测值:   ");
	TextOut(hmemDC,PID1_X3,PID1_Y1,"PV2被控对象2实测值: ");	
	
	
	TextOut(hmemDC,PID1_X1,PID1_Y4,"SV1回路1控制设定值:");
	TextOut(hmemDC,PID1_X3,PID1_Y4,"SV2回路2控制设定值:");

	TextOut(hmemDC,PID1_X1,PID1_Y5,"回路1:自动");
	TextOut(hmemDC,PID1_X3,PID1_Y5,"回路2:自动");

	
TextOut(hmemDC,PID1_X1,PID1_Y9,"P1: 比例");
TextOut(hmemDC,PID1_X1,PID1_Y10,"I1: 积分");
TextOut(hmemDC,PID1_X1,PID1_Y11,"D1: 微分");

TextOut(hmemDC,PID1_X3+10,PID1_Y9,"P2: 比例");
TextOut(hmemDC,PID1_X3+10,PID1_Y10,"I2: 积分");
TextOut(hmemDC,PID1_X3+10,PID1_Y11,"D2: 微分");
		     	EndPaint(hDlg,hmemDC);
		   	}
	    break;
    case MSG_SHEETCMD:
        if (wParam == IDOK) {
        //    char buffer [20];
         //   GetDlgItemText (hDlg, IDC_EDIT1, buffer, 18);
        //    buffer [18] = '\0';

        }
        return 0;

    case MSG_COMMAND:
        switch (wParam) {
        case IDOK:
        case IDCANCEL:

⌨️ 快捷键说明

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