📄 configmeter.c
字号:
/*
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 + -