#include <string.h>
#include <stdio.h>
#include <math.h>
#include "timer.h"
#include "ui.h"
#include "uart.h"
#include "dwin8283.h"
#include "RX8130.h"
#include "mpr.h"
#include "TpProc.h"
#include "general.h"
#include "main.h"
#include "ShmQueue.h"
#include "ParasProc.h"
//ShmQueue g_qPressSampVal;
//u16 g_nPressSampValBuff[PRESS_SAMPVAL_QSIZE+1];
#define FILTERA_QSIZE 20
#define FILTERB_QSIZE 10
ShmQueue g_qFilterA,g_qFilterB;//,g_qHistoryPara,g_qHistoryDate,g_qHistoryTime;
QDATA_TYPE g_nFilterABuff[FILTERA_QSIZE+1];
QDATA_TYPE g_nFilterBBuff[FILTERB_QSIZE+1];
SysFlagDef g_bitFlag;
SysVarDef g_SysVar;
BpmCtxDef g_BpmCtx;
u16 Temp_Data[10];
u16 Sound_Lv,Light_Lv,Sound_Lv_Bak,Light_Lv_Bak;
u16 Measure_Flag=0;
u16 Rtc_Set[4];
/*******************************************************************************************/
#if 0
bit g_MeasureFlag=0,g_I2CError=0;
//u8 g_RunMode=0,*g_DataBuffer;
u16 g_TempIndex,g_Index=0,Each_20ms_Count=0,Next_Flag;
u16 Pressure_Now=0,Pressure_First=0,Pressure_Now_Display=0,Pressure_Last,Pressure_Last_Last,Measure_Flag=0,Pump_Flag=0,Valve_Flag=0,t_Diver[16];
u16 High_Pressure_Flag,Low_Pressure_Flag,MaiBo_Flag,Temp_Data[10],Report_Flag=0;
u16 Min_Value,Max_Value,Min_Index,Max_Index,Clear_Histroy_Flag,Max,Min,Err_Num;
u16 Tem_Data[1024],Human_A_B=0,Human_A_History_Count_Total,Human_B_History_Count_Total,Human_History_Count_Now,Page,Human_History_Count_Now_Bak=0xFFFF;
#endif
/********************************************************************************************/
//sbit Pump = P3^0; // Pump信号线
//sbit Valve = P3^1; // Valve信号线
sbit portChargStatus = P1^4;
#define Start_Pump() RelayCtl(RELAY_PUMP,1)
#define Stop_Pump() RelayCtl(RELAY_PUMP,0)
#define Start_Valve() RelayCtl(RELAY_VALVE,0)
#define Stop_Valve() RelayCtl(RELAY_VALVE,1)
/*******************************************************************************************
函 数 名 : Relay_Init
功能描述 : 初始化继电器IO控制口
输入参数 : none
输出参数 : none
修改历史 :
日 期 : 2021年10月25日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void Relay_Init(void)
{
SetPinOut(3,0); //Config P1.5 as relay1 output port
SetPinOut(3,1); //Config P1.6 as relay1 output port
//close all relay
PinOutput(3,0,0);
PinOutput(3,1,0);
}
/*******************************************************************************************
函 数 名 : RelayCtl
功能描述 : 继电器控制
输入参数 : bRelayIdx:继电器号(0~1)其中0表示所有继电器;
bCtl:开关控制,(0:close;1:open)
输出参数 : none
修改历史 :
日 期 : 2021年11月18日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void RelayCtl(u8 bRelayIdx,u8 bCtl)
{
if(bRelayIdx == RELAY_PUMP)
{
PinOutput(3,0,bCtl!=0);
g_bitFlag.bits.bPumpOnOff = (bCtl != 0);
if(bCtl)
LogPrint(0,"PUMP ON!");
else
LogPrint(0,"PUMP OFF!");
}
else if(bRelayIdx == RELAY_VALVE)
{
PinOutput(3,1,bCtl!=0);
g_bitFlag.bits.bValveOnOff = (bCtl != 0);
if(bCtl)
LogPrint(0,"VALVE ON!");
else
LogPrint(0,"VALVE OFF!");
}
else
{
PinOutput(3,0,bCtl!=0);
PinOutput(3,1,bCtl!=0);
g_bitFlag.bits.bPumpOnOff = (bCtl != 0);
g_bitFlag.bits.bValveOnOff = (bCtl != 0);
if(bCtl)
{
LogPrint(0,"PUMP ON!");
LogPrint(0,"VALVE ON!");
}
else
{
LogPrint(0,"PUMP OFF!");
LogPrint(0,"VALVE OFF!");
}
}
}
/*******************************************************************************************
函 数 名 : void PeriTest(uvoid)
功能描述 : 测试函数,不用时将相应项 #if 0
输入参数 : none
输出参数 : none
修改历史 :
日 期 : 2021年10月25日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void PeriTest(void)
{
#if 0
u32 nPeriTestTick;
u16 temp;
u16 temp2;
u8 bTemp;
bit toggle = 0;
nPeriTestTick = TICK_NOW;
while(1)
{
//test relay
#if 0
if((TimeElapsed(nPeriTestTick,TICK_NOW)) > 2000)
{
nPeriTestTick = TICK_NOW;
RelayCtl(1,toggle);
toggle = ~toggle;
RelayCtl(2,toggle);
toggle = ~toggle;
}
#endif
#if 0
// if((TimeElapsed(nPeriTestTick,TICK_NOW)) > 50)
{
//获取温度值
temp = get_press(DS_COOLING1,&temp2);
write_dgus_vp(VP_CUR_COOLING_TEMP,(u8*)&temp,1); //送显
write_dgus_vp(VP_CUR_COOLING_TEMP_ADVAL,(u8*)&temp2,1); //送显
temp = get_temp(DS_FREEZING,&temp2);
write_dgus_vp(VP_CUR_FREEZING_TEMP,(u8*)&temp,1); //送显
write_dgus_vp(VP_CUR_FREEZING_TEMP_ADVAL,(u8*)&temp2,1); //送显
// nPeriTestTick = TICK_NOW;
}
#endif
#if 0
if((TimeElapsed(nPeriTestTick,TICK_NOW)) > 10)
{
nPeriTestTick = TICK_NOW;
GetPressTemp(&temp,NULL);
// ReadByte(0x02,&bTemp);
}
#endif
#if 0
if((TimeElapsed(nPeriTestTick,TICK_NOW)) > 2000)
{
nPeriTestTick = TICK_NOW;
Rx8130_GetTime();
}
#endif
#if 1
LogPrint(0,"High_Pressure_Report!");
High_Pressure_Report(120);
LogPrint(0,"Low_Pressure_Report!");
Low_Pressure_Report(80);
#endif
}
#endif
}
/*******************************************************************************************
函 数 名 : void DrawPoint(u16 uiData,u8 uiChannel)
功能描述 : 曲线画点
输入参数 : uiData:打点数据
uiChannel: 通道号
输出参数 : none
修改历史 :
日 期 : 2021年12月23日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void DrawPoint(u16 uiData,u8 uiChannel)
{
u16 uiTempData[4];
uiTempData[0] = 0x5AA5;
uiTempData[1] = 0x0100;
uiTempData[2] = uiChannel<<8 | 0x01;
uiTempData[3] = uiData*100;
write_dgus_vp(0x310,(u8*)uiTempData,4);
}
/*******************************************************************************************
函 数 名 : void InitCurveChannel(u8 uiChannel)
功能描述 : 初始化曲线通道
输入参数 : bChannel: 通道号
bEnable:曲线显示开关
输出参数 : none
修改历史 :
日 期 : 2021年12月23日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void InitCurveChannel(u8 bChannel,u8 bEnable)
{
u16 TempData[2];
TempData[0] = 0; //高字
if(bEnable)
TempData[1] = HISTORY_CURVE_POINT_MAX_NUM; //低字
else
TempData[1] = 0; //disable curve display
write_dgus_vp(0x300 | bChannel<<1,(u8*)&TempData[0],2);
}
/*******************************************************************************************
函 数 名 : void DispHistoryData(void)
功能描述 : 显示历史数据
输入参数 : none
输出参数 : none
修改历史 :
日 期 : 2021年12月23日
作 者 : xujianping
修改内容 : 创建
********************************************************************************************/
void DispHistoryData(void)
{
u16 uiTemp;
s32 slTemp;
if(g_SysCfgParas.uiCurHumanAB)
{
NorFlash_Read(Nor_HistoryDateB_AddrBase + g_SysVar.siHistoryDataPtr<<1,Dgus_Test_Vp,(u8*)&Temp_Data[0],4);
NorFlash_Read(Nor_HistoryTimeB_AddrBase + g_SysVar.siHistoryDataPtr<<1,Dgus_Test_Vp,(u8*)&Temp_Data[2],4);
}
else
{
NorFlash_Read(Nor_HistoryDateA_AddrBase + g_SysVar.siHistoryDataPtr<<1,Dgus_Test_Vp,(u8*)&Temp_Data[0],4);
NorFlash_Read(Nor_HistoryTimeA_AddrBase + g_SysVar.siHistoryDataPtr<<1,Dgus_Test_Vp,(u8*)&Temp_Data[2],4);
}
LogPrint(0,"ReadNor(ptr%d):%d-%d-%d %d:%d:%d",g_SysVar.siHistoryDataPtr,Temp_Data[0]&0xff,Temp_Data[1]>>8,Temp_Data[1]&0xff,Temp_Data[2]&0xff,Temp_Data[3]>>8,Temp_Data[3]&0xff);
uiTemp = 2000 + (Temp_Data[0]&0xff);
write_dgus_vp(Dgus_HistoryYear,(u8*)
评论0