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

📄 configmeter.c

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


defined in meter.h
//流量卡
  flux_id  ;//流量卡id,表示当前操作的流量卡
  flux_number ;//流量卡总数
   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 "configmeter.h"
#include "serial.h"
#include "meter.h"
#include "fonts.h"
const unsigned char * table_BT[]={"1200","2400","4800","9600","19200","38400"};

  /*发送命令下去*/
//设备ID,命令,控件ID
int SendCmd(HWND hDlg,int  ctl_id  )
{	int p;int addr;int dev_id;int dev_addr;
	int cmd;
 	int content;
	
	cmd=RTU_WRITE;   //RTU_WRITE=0X06
       content=GetDlgItemInt(hDlg,ctl_id,&p,0);
	   
	if(flux_number>0)
	{
	dev_id=FluxReged[flux_id];
	dev_addr=devicesinfo[dev_id].dev_addr;
	//或者  dev_addr=card_flux_reg[flux_id].dev_addr;
	}
	 
	if(ctl_id==CT1_ADDR)addr=0X1B;  
	 RTU_Write(  dev_addr,3.0156 , addr);
  	 
	 usleep(10000); 
	 
}


/*
流量卡通讯
入口:flux_id
根据读取命令时的参数地址
//分析到的信息放在设备的公共结构中
*/
void CardFluxComm(void)
{
unsigned char str[20];
float  value;
// printf( "comm_addr: %d",comm_addr);
	flux_id=0;//当前的流量卡,已知为第一个流量卡
//对4个字节的数据进行解析
if(comm_addr<64)
  	value= HEX4ToFloat(RecvBuf+3);
 switch (comm_addr)
 {
   case 0:card_flux_reg[flux_id].temperature=value;printf("v=%f",value);break; 
  case 1:card_flux_reg[flux_id].pressure=value ; printf("v=%f",value); break; 
  case  2 :card_flux_reg[flux_id].flux=value ; printf("v=%f ",value); break; 
  case  3 :card_flux_reg[flux_id].instant_flux=value ; printf("v=%f ",value); break; 
  case  4 :card_flux_reg[flux_id].Hcumul_flux=value ; printf("v=%f ",value); break; 
  case  5 :card_flux_reg[flux_id].Lcumul_flux=value ;  printf("v=%f ",value);break; 
  case  6 :card_flux_reg[flux_id].alarm1_status=value ; printf("v=%f ",value); break; 
  case  7 :card_flux_reg[flux_id].alarm2_status=value ; printf("v=%f ",value); break; 
  case  8 :card_flux_reg[flux_id].CLK=value ;  break; 
  case  9 :card_flux_reg[flux_id].AL1=value ;  break; 
  case  0x0A :card_flux_reg[flux_id].AL2=value ;  break; 
  case  0x0B :card_flux_reg[flux_id].AH1=value ;  break; 
  case  0x0C :card_flux_reg[flux_id].AH2=value ;  break; 
  case  0x0D :card_flux_reg[flux_id].K1=value ;  break; 
  case  0x0E :card_flux_reg[flux_id].K2=value ;  break; 
  case  0x0F :card_flux_reg[flux_id].K3=value ;  break; 
  case  0x10 :card_flux_reg[flux_id].K4=value ;  break; 
  case  0x11 :card_flux_reg[flux_id].P=value ;  break; 
  case  0x12 :card_flux_reg[flux_id].A1=value ;  break; 
  case  0x13 :card_flux_reg[flux_id].A2=value ;  break; 
  case  0x14 :card_flux_reg[flux_id].A3=value ;  break; 
  case  0x15:card_flux_reg[flux_id].DIP=value ;  break; 
  case  0x16 :card_flux_reg[flux_id].B1=value ;  break; 
  case  0x17 :card_flux_reg[flux_id].B2=value ;  break; 
  case  0x18 :card_flux_reg[flux_id].B3=value ;  break; 
  case  0x19 :card_flux_reg[flux_id].B4=value ;  break; 
  case  0x1A :card_flux_reg[flux_id].B5=value ;  break; 
  case  0x1B:card_flux_reg[flux_id].DE=value ;  break; 
  case  0x1C :card_flux_reg[flux_id].BT=value ;  break; 
  case  0x1D :card_flux_reg[flux_id].C1=value ;  break; 
  case  0x1E :card_flux_reg[flux_id].C2=value ;  break; 
  case  0x1F:card_flux_reg[flux_id].C3=value ;  break; 
  case  0x20 :card_flux_reg[flux_id].C4=value ;  break; 
  case  0x21 :card_flux_reg[flux_id].C5=value ;  break; 
  case  0x22:card_flux_reg[flux_id].C6=value ;  break; 
  case  0x23 :card_flux_reg[flux_id].D1=value ;  break; 
  case  0x24:card_flux_reg[flux_id].D2=value ;  break; 
  case  0x25 :card_flux_reg[flux_id].D3=value ;  break; 
  case  0x26 :card_flux_reg[flux_id].PB1=value ;  break; 
  case  0x27:card_flux_reg[flux_id].KK1=value ;  break; 
  case  0x28 :card_flux_reg[flux_id].PB2=value ;  break; 
  case  0x29:card_flux_reg[flux_id].KK2=value ;  break; 
  case  0x2A :card_flux_reg[flux_id].PB3=value ;  break; 
  case  0x2B:card_flux_reg[flux_id].KK3=value ;  break; ; 
  case  0x2C :card_flux_reg[flux_id].SL=value ;  break; 
  case  0x2D :card_flux_reg[flux_id].SH=value ;  break; 
  case  0x2E:card_flux_reg[flux_id].PA=value ;  break; 
  case  0x2F :card_flux_reg[flux_id].TL=value ;  break; 
  case  0x30 :card_flux_reg[flux_id].TH=value ;  break; 
  case  0x31:card_flux_reg[flux_id].PL=value ;  break; 
  case  0x32 :card_flux_reg[flux_id].PH=value ;  break; 
  case  0x33:card_flux_reg[flux_id].CAL=value ;  break; 
  case  0x34:card_flux_reg[flux_id].CAH=value ;  break; 
  case  0x35:card_flux_reg[flux_id].CAA=value ;  break; 
  case  0x36:card_flux_reg[flux_id].DT=value ;  break; 
  case  0x37:card_flux_reg[flux_id].DP=value ;  break; 
  case  0x38:card_flux_reg[flux_id].DCA=value ;  break; 
  case  0x39:card_flux_reg[flux_id].PV=value ;  break; 
  case  0x3A:card_flux_reg[flux_id].SV=value ;  break; 
  case  0x3B:card_flux_reg[flux_id].AT=value ;  break; 



  
  default:card_flux_reg[flux_id].temperature=1  ;break; 
 }
}


/*第一个页面动态参数的读取命令发送*/
//入口:流量卡ID号
void ReadFPage1(int fcard_id )
{
unsigned char P1ADDR[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0X07};

int i;
int id;
int dev_addr;
id=fcard_id;
   dev_addr=card_flux_reg[id].dev_addr;

       printf("card addr is  %d \n", dev_addr);
	comm_addr=0x00;
	// 地址1-7 为动态参数
 for(i=0;i<8;i++)
 	{
 	comm_addr=P1ADDR[i];
	 SendRTU3( dev_addr,RTU_READ,comm_addr);//设备地址,读取命令,参数的寄存器地址
	 usleep(10000);   
 	}

}
/*第2个页面动态参数的读取命令发送*/
//入口:流量卡ID号
void ReadFPage2(int fcard_id )
{
unsigned char P2ADDR[] = 
	{0x0d,0x0e,0x0f,
	0x10,0x11,0x12,0x13,0x14,0x15, 
	0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,
	0X2e
	};

int i;
int id;
int dev_addr;
id=fcard_id;
   dev_addr=devicesinfo[FluxReged[flux_id]].dev_addr;

       printf("card addr is  %d \n", dev_addr);
	comm_addr=0x00;
	// 地址1-7 为动态参数
 for(i=0;i<17;i++)
 	{
 	comm_addr=P2ADDR[i];
	 SendRTU3( dev_addr,RTU_READ,comm_addr);//设备地址,读取命令,参数的寄存器地址
	 usleep(10000);   
 	}

}
/*第3个页面动态参数的读取命令发送*/
//入口:流量卡ID号
void ReadFPage3(int fcard_id )
{
unsigned char P2ADDR[] = 
	{0x1d,0x1e,0x1f,
	0x20,0x21,0x22,0x23,0x24,0x25, 
	0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2e,0x2f,
	0x30,0x31,0x32,0x33,0x34,0x35, 
	0x36,0x37,0x38,0x39,0x3a,0x3b 
	};

int i;
int id;
int dev_addr;
id=fcard_id;
   dev_addr=devicesinfo[FluxReged[flux_id]].dev_addr;

       printf("card addr is  %d \n", dev_addr);
	comm_addr=0x00;
	// 地址1-7 为动态参数
 for(i=0;i<30;i++)
 	{
 	comm_addr=P2ADDR[i];
	 SendRTU3( dev_addr,RTU_READ,comm_addr);//设备地址,读取命令,参数的寄存器地址
	 usleep(10000);   
 	}

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

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

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

}

void ShowT2(HWND hWnd)
{
	int i;
	for(i=0;i<dim(ctrlm2);i++) 
	   {
               ShowWindow(ctrlm2[i].hwndControl,SW_SHOW); 
     } 
}
void HideT2(HWND hWnd)
{
	int i;
	for(i=0;i<dim(ctrlm2);i++) 
	   {
               ShowWindow(ctrlm2[i].hwndControl,SW_HIDE); 
     } 
}
//建立流量板卡第3个页面控件
void CreateT3(HWND hWnd)
{int i;
    for(i=0; i<dim(ctrlm3);i++){
        		ctrlm3[i].hwndControl =  CreateWindow(
                 ctrlm3[i].spClassName,
		             ctrlm3[i].spCaption,
		             WS_CHILD|ctrlm3[i].dwStyle ,
		             ctrlm3[i].conID,
		             ctrlm3[i].conx,
		             ctrlm3[i].cony,
		             ctrlm3[i].conw,
		             ctrlm3[i].conh,
		             hWnd,
		             0);		
				
                 }

}

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

⌨️ 快捷键说明

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