111 lines
3.5 KiB
C
111 lines
3.5 KiB
C
|
|
#include "RunEnvTask.h"
|
||
|
|
#include "WatchDogTask.h"
|
||
|
|
#include "ToolDataTypeSwitch.h"
|
||
|
|
#include "FileSysTask.h"
|
||
|
|
#include "UpcCommTask.h"
|
||
|
|
|
||
|
|
#include "TempAndHumiDrv.h"
|
||
|
|
|
||
|
|
#include "McuBspAdc.h"
|
||
|
|
|
||
|
|
#include "driverlib/gpio.h"
|
||
|
|
#include "driverlib/pin_map.h"
|
||
|
|
|
||
|
|
#include <string.h>
|
||
|
|
#include <stdio.h>
|
||
|
|
|
||
|
|
#define LEAK1_ADC_ID MCU_BSP_ADC5
|
||
|
|
|
||
|
|
/* 光电分离舱漏水 */
|
||
|
|
static uint32_t gLeak1_u32 = 0;
|
||
|
|
static float gLeak1_f = 0.0f;
|
||
|
|
/* 光电分离舱温湿度 */
|
||
|
|
static uint32_t gTemp_u32 = 0;
|
||
|
|
static float gTemp_f = 0.0f;
|
||
|
|
static uint32_t gHumi_u32 = 0;
|
||
|
|
static float gHumi_f = 0.0f;
|
||
|
|
|
||
|
|
static unsigned short gTaskRunEnvSendSerial = 0;
|
||
|
|
|
||
|
|
static int gTaskRunEnvWatchDogId = -1; // 心跳包看门狗事件ID
|
||
|
|
static int gTaskRunEnvPickEnable = -1; // 端口输出状态采集使能
|
||
|
|
static unsigned char gTaskRunEnvSendBuf[13] = {0}; // 端口输出发送的状态缓存,13因为该消息体大小为13
|
||
|
|
static char gTaskRunEnvFileDataBuf[1024] = {0};
|
||
|
|
|
||
|
|
void TaskRunEnvInit(void)
|
||
|
|
{
|
||
|
|
/* 初始化ADC */
|
||
|
|
McuBspAdcInit();
|
||
|
|
/* 初始化温湿度 */
|
||
|
|
DrvTempAndHumiInit();
|
||
|
|
/* 看门狗事件注册 */
|
||
|
|
gTaskRunEnvWatchDogId = TaskWatchdogRegEvent("TaskRunEnv");
|
||
|
|
}
|
||
|
|
|
||
|
|
void TaskRunEnv(void *arg)
|
||
|
|
{
|
||
|
|
unsigned int RealWbyte;
|
||
|
|
int ret = 0;
|
||
|
|
int i = 0;
|
||
|
|
/* 将时钟同步任务开启写入日志 */
|
||
|
|
do {
|
||
|
|
ret = TaskFileLogWrite("TaskRunEnv: Join in!!\n", strlen("TaskRunEnv: Join in!!\n"), &RealWbyte);
|
||
|
|
TaskWatchdogFreed(gTaskRunEnvWatchDogId);
|
||
|
|
OSTimeDly(1);
|
||
|
|
} while (ret > 0);
|
||
|
|
while (1) {
|
||
|
|
OSTimeDly(100);
|
||
|
|
TaskWatchdogFreed(gTaskRunEnvWatchDogId);
|
||
|
|
if (gTaskRunEnvPickEnable != 1) {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
/* 获取温湿度数据 */
|
||
|
|
i = 0;
|
||
|
|
while (0 > DrvTempAndHumiGet(&gTemp_f, &gHumi_f)) {
|
||
|
|
i++;
|
||
|
|
OSTimeDly(10);
|
||
|
|
TaskWatchdogFreed(gTaskRunEnvWatchDogId);
|
||
|
|
if (i > 1000) {
|
||
|
|
gTemp_f = 0;
|
||
|
|
gHumi_f = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
ToolFloatToUint32(gTemp_f, &gTemp_u32);
|
||
|
|
ToolFloatToUint32(gHumi_f, &gHumi_u32);
|
||
|
|
/* 获取漏水信号 */
|
||
|
|
McuBspAdcGetValue(LEAK1_ADC_ID, &gLeak1_f);
|
||
|
|
ToolFloatToUint32(gLeak1_f, &gLeak1_u32);
|
||
|
|
/* 打包 */
|
||
|
|
gTaskRunEnvSendBuf[0] = 1;
|
||
|
|
gTaskRunEnvSendBuf[1] = (gTemp_u32 >> 24) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[2] = (gTemp_u32 >> 16) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[3] = (gTemp_u32 >> 8) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[4] = gTemp_u32 & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[5] = (gHumi_u32 >> 24) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[6] = (gHumi_u32 >> 16) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[7] = (gHumi_u32 >> 8) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[8] = gHumi_u32 & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[9] = (gLeak1_u32 >> 24) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[10] = (gLeak1_u32 >> 16) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[11] = (gLeak1_u32 >> 8) & 0xff;
|
||
|
|
gTaskRunEnvSendBuf[12] = gLeak1_u32 & 0xff;
|
||
|
|
/* 发送函数 */
|
||
|
|
TaskUpcCommSendMessage(TASK_RUN_ENV_MESSGAE_ID, &gTaskRunEnvSendSerial, gTaskRunEnvSendBuf, sizeof(gTaskRunEnvSendBuf));
|
||
|
|
gTaskRunEnvSendSerial++;
|
||
|
|
TaskRunEnvDisable();
|
||
|
|
sprintf(gTaskRunEnvFileDataBuf, "Temp:%.02f,Humi:%.02f,,Leak1:%0.2f", gTemp_f,gHumi_f, gLeak1_f);
|
||
|
|
TaskFileDataWrite(TASK_RUN_FILE_TYPE, gTaskRunEnvFileDataBuf, strlen(gTaskRunEnvFileDataBuf),&RealWbyte);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void TaskRunEnvEnable(void)
|
||
|
|
{
|
||
|
|
gTaskRunEnvPickEnable = 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
void TaskRunEnvDisable(void)
|
||
|
|
{
|
||
|
|
gTaskRunEnvPickEnable = 0;
|
||
|
|
}
|