📄 wmalrpro.c
字号:
#include "includes.h"
//判断告警
u08 CheckHappen_FLAG(void)
{
u08 i;
u08 b_FLAG = 0 ;//无告警或告警恢复
if((inputReadWord() & 0XFFFF) == 0XFFFF)//判断有无告警发生
for(i = 0 ; i < MAXALRREC;i++)//无告警发生,判断是否还有没恢复告警
{
if(xRAlrData[i].DCALRDelete_FLAG!=0XAA)
{
b_FLAG = 1 ;
break;
}
}
else
b_FLAG = 1;
return(b_FLAG);
}
//解析告警
void dctype1_da(void)
{
u08 ucStart;//是否启用
u16 ucSample;
u16 ucTmp;
if(!CheckHappen_FLAG())
return;//无告警发生,或告警全部已恢复
ucSample=inputReadWord();
ucSample=~ucSample;
//列告警
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_LieGJ); //有告警
else
handleOkBit(SAMTYPE_LieGJ); //无告警
ucSample>>=1;
//烟雾
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_YanWu);
else
handleOkBit(SAMTYPE_YanWu);
ucSample>>=1;
//进水
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_JinShui);
else
handleOkBit(SAMTYPE_JinShui);
ucSample>>=1;
//门禁1
ucStart = 0x07;//门禁开启路数
ucTmp=ucStart&0x01;
if (ucTmp)
{
ucTmp=ucSample&0x0001;
if (ucTmp)
handleopendorBit(SAMTYPE_MENGJIN1,1);//开
else
handledorBit(SAMTYPE_MENGJIN1,0);//关
}
else
xRdorData[SAMTYPE_MENGJIN1].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁一未启用
ucStart>>=1;
ucSample>>=1;
//门禁2
ucTmp=ucStart&0x01;
if (ucTmp)
{
ucTmp=ucSample&0x0001;
if (ucTmp)
handleopendorBit(SAMTYPE_MENGJIN2,1);//开
else
handledorBit(SAMTYPE_MENGJIN2,0);//关
}
else
xRdorData[SAMTYPE_MENGJIN2].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁二未启用
ucStart>>=1;
ucSample>>=1;
//门禁3
ucTmp=ucStart&0x01;
if (ucTmp)
{
ucTmp=ucSample&0x0001;
if (ucTmp)
handleopendorBit(SAMTYPE_MENGJIN3,1);//开
else
handledorBit(SAMTYPE_MENGJIN3,0);//关
}
else
xRdorData[SAMTYPE_MENGJIN3].dorValue = SAMTYPE_MENGJIN_UNUSE;//门禁三未启用
// ucStart>>=1;
ucSample>>=3;
//空开1
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK1);
else
handleOkBit(SAMTYPE_KK1);
ucSample>>=1;
//空开2
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK2);
else
handleOkBit(SAMTYPE_KK2);
ucSample>>=1;
//空开3
ucTmp=ucSample&0x01;
if (ucTmp)
handleAlrBit(SAMTYPE_KK3);
else
handleOkBit(SAMTYPE_KK3);
ucSample>>=1;
//空开4
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK4);
else
handleOkBit(SAMTYPE_KK4);
ucSample>>=1;
//防雷
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_FANGLEI);
else
handleOkBit(SAMTYPE_FANGLEI);
ucSample>>=1;
//蓄电池电压过低空开
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK7_XDCLOWER);
else
handleOkBit(SAMTYPE_KK7_XDCLOWER);
ucSample>>=1;
//空开6
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK6);
else
handleOkBit(SAMTYPE_KK6);
//空开5
ucTmp=ucSample&0x0001;
if (ucTmp)
handleAlrBit(SAMTYPE_KK5);
else
handleOkBit(SAMTYPE_KK5);
}
//温湿度
void wenshidu_da(void)
{
u08 ucStart;
u08 ucTmp;
ucStart = 0x07;//?开启路数
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
//选择第一路温湿度
{
xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiduuse_FLAG=0x00;//起用
temperature(SAMTYPE_WENSHIDU1);
do_temperature_humidity(SAMTYPE_WENSHIDU1);
}
else
xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
ucStart>>=1;
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
//选择第二路温湿度
{
xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiduuse_FLAG=0x00;//起用
temperature(SAMTYPE_WENSHIDU2);
do_temperature_humidity(SAMTYPE_WENSHIDU2);
}
else
xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
//选择第三路温湿度
ucStart>>=1;
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
//选择第二路温湿度
{
xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiduuse_FLAG=0x00;//起用
temperature(SAMTYPE_WENSHIDU3);
do_temperature_humidity(SAMTYPE_WENSHIDU3);
}
else
xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiduuse_FLAG=0xAA;//温湿度未启用标志
}
void wenshidu_FLAG(void)
{//清温湿度灵敏度标志
xRwenshiData[SAMTYPE_WENSHIDU1].DCwenshiDelete_FLAG= 0;
xRwenshiData[SAMTYPE_WENSHIDU2].DCwenshiDelete_FLAG= 0;
xRwenshiData[SAMTYPE_WENSHIDU3].DCwenshiDelete_FLAG= 0;
}
void DCAC_V_A(void)
{
u16 humidity[1];
u16 simdata;
u08 ucStart;
u08 ucTmp;
ucStart = 0x07;//?开启路数
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
{//选择48V电压
xRDCACData[SAMTYPE_DCV].use_FLAG=0x00;//起用
V_48();//选择48V电压
a2dStartConvert();
_nop_();
_nop_();
simdata=ad_result(do_a2d(),liangcheng_48_V );
a2dOff();//关AD
xRDCACData[SAMTYPE_DCV].Value = simdata%10;
Display_8x8Int_data(48,7,xRDCACData[SAMTYPE_DCV].Value,1,0);
xRDCACData[SAMTYPE_DCV].Value = simdata/10 ;
Display_8x8Int_data(16,7,xRDCACData[SAMTYPE_DCV].Value,3,0);
}
else
xRDCACData[SAMTYPE_DCV].use_FLAG=0xAA;//未启用标志
ucStart>>=1;
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
{//选择48V电流
xRDCACData[SAMTYPE_DCA].use_FLAG=0x00;//起用
A_48();
a2dStartConvert();
_nop_();
_nop_();
simdata = ad_result_DCA(do_a2d() );//滤波处理函数do_a2d();
a2dOff();//关AD
// #if 0
xRDCACData[SAMTYPE_DCA].Value = simdata%100;
if(xRDCACData[SAMTYPE_DCA].Value<10)
{
Lcd_8x8Printf(104,7,PSTR("0"),0);
Display_8x8Int_data(112,7,xRDCACData[SAMTYPE_DCA].Value,1,0);
}
else
Display_8x8Int_data(104,7,xRDCACData[SAMTYPE_DCA].Value,2,0);
xRDCACData[SAMTYPE_DCA].Value = simdata/100;
if(xRDCACData[SAMTYPE_DCA].Value>15)
xRDCACData[SAMTYPE_DCA].Value= xRDCACData[SAMTYPE_DCA].Value-1;//修正
Display_8x8Int_data(80,7,xRDCACData[SAMTYPE_DCA].Value,2,0);
// #endif
humidity[0]=simdata ; //ad_result_DCA(do_a2d() );
rprintf("\r\nTest humidity :%d",humidity[0]);
}
else
xRDCACData[SAMTYPE_DCA].use_FLAG=0xAA;//未启用标志
ucStart>>=1;
ucTmp=ucStart&0x01;//判断是否起用
if (ucTmp)
{////选择220V电流
xRDCACData[SAMTYPE_ACA].use_FLAG=0x00;//起用
A_220();
a2dStartConvert();
_nop_();
_nop_();
simdata = ad_result(do_a2d() , liangcheng_220_A )+2;//滤波处理函数do_a2d();
a2dOff();//关AD
xRDCACData[SAMTYPE_ACA].Value = simdata%100;
if(xRDCACData[SAMTYPE_ACA].Value<10)
{
Lcd_8x8Printf(104,0,PSTR("0"),0);
Display_8x8Int_data(112,0,xRDCACData[SAMTYPE_ACA].Value,1,0);
}
else
Display_8x8Int_data(104,0,xRDCACData[SAMTYPE_ACA].Value,2,0);
xRDCACData[SAMTYPE_ACA].Value = simdata/100;
Display_8x8Int_data(80,0,xRDCACData[SAMTYPE_ACA].Value,2,0);
// humidity[0]= ad_result(do_a2d() , liangcheng_220_A );
// rprintf("\r\nTest humidity :%d",humidity[0]);
}
// else
//xRDCACData[SAMTYPE_ACA].use_FLAG=0xAA;//未启用标志
}
// ucTmp=uiNum%10;
// disp_buffer[ucDigit-1-i]=ucTmp+0x30;
// uiNum/=10;
//#define SAMTYPE_DCV 0//DCV
//#define SAMTYPE_DCA 1//DCA
//#define SAMTYPE_ACV 2//ACV
//#define SAMTYPE_ACA 3//ACA
//#define SAMTYPE_UNUSE OxAA//未起用标志
//void Display_8x8Int_data(.......)
//struct DCACData xRDCACData[MAXOFENDATA];//4
//unsigned char use_FLAG//0xAA,未起用
//unsigned int Value;//值
//Lcd_8x8Printf(0,0,PSTR("AC"),0);
// Lcd_8x8Printf(24,0,PSTR("115.5V"),0);
// Lcd_8x8Printf(72,0,PSTR("--"),0);
// Lcd_8x8Printf(88,0,PSTR("999mA"),0);
// Lcd_8x8Printf(0,7,PSTR("DC"),0);
// Lcd_8x8Printf(24,7,PSTR("43.5V"),0);
// Lcd_8x8Printf(64,7,PSTR("--"),0);
// Lcd_8x8Printf(80,7,PSTR("999mA"),0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -