河北水利局项目
This commit is contained in:
104
ctl/ctl.c
Normal file
104
ctl/ctl.c
Normal file
@@ -0,0 +1,104 @@
|
||||
#include "include.h"
|
||||
#include "metertable.h"
|
||||
#include "meterseltable.h"
|
||||
#include "rtc_ext.h"
|
||||
|
||||
SemaphoreHandle_t xSemaphore_ctl;
|
||||
extern void simul_plc_rx_addr(u8 *str1);
|
||||
extern void controlkeyaddr(u8 *str1,u8 val);
|
||||
|
||||
static u8 state_flag = 0;
|
||||
|
||||
static u8 ctl_type = 0;
|
||||
|
||||
void ctl_task_1()
|
||||
{
|
||||
u16 num = metertable_getnum();
|
||||
u16 i = 0;
|
||||
for(i=0;i<num;i++)
|
||||
{
|
||||
u8 * addr = metertable_getadddr(i);
|
||||
if(METER_CLOSE == state_flag)
|
||||
{
|
||||
controlkeyaddr(addr,0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
controlkeyaddr(addr,0xFF);
|
||||
}
|
||||
vTaskDelay(MBUS_SWITCH_TIMEOUT+40000);
|
||||
|
||||
st_rtc_ext * time = (st_rtc_ext *)GetCurrentTime();
|
||||
printf("\r\n%02x-%02x-%02x %02x:%02x:%02x \r\n", time->year,time->month,time->day,time->hour,time->min,time->sec);
|
||||
printf("阀门动作 总数=%d i=%d 完成\r\n",num,i+1);
|
||||
}
|
||||
}
|
||||
|
||||
void ctl_task_2()
|
||||
{
|
||||
u16 num = meterseltable_getnum();
|
||||
u16 i = 0;
|
||||
for(i=0;i<num;i++)
|
||||
{
|
||||
u8 * addr = meterseltable_getadddr(i);
|
||||
if(1 == state_flag)
|
||||
{
|
||||
controlkeyaddr(addr,0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
controlkeyaddr(addr,0xFF);
|
||||
}
|
||||
vTaskDelay(MBUS_SWITCH_TIMEOUT+40000);
|
||||
st_rtc_ext * time = (st_rtc_ext *)GetCurrentTime();
|
||||
printf("\r\n%02x-%02x-%02x %02x:%02x:%02x \r\n", time->year,time->month,time->day,time->hour,time->min,time->sec);
|
||||
printf("阀门动作 总数=%d i=%d 完成\r\n",num,i+1);
|
||||
}
|
||||
|
||||
meterseltable_init();
|
||||
}
|
||||
|
||||
void ctl_start(u8 flag)
|
||||
{
|
||||
|
||||
ctl_type = 0;
|
||||
state_flag = flag;
|
||||
xSemaphoreGive(xSemaphore_ctl);
|
||||
}
|
||||
|
||||
void ctl_sel_start(u8 flag)
|
||||
{
|
||||
|
||||
ctl_type = 1;
|
||||
state_flag = flag;
|
||||
xSemaphoreGive(xSemaphore_ctl);
|
||||
}
|
||||
|
||||
void ctl_task()
|
||||
{
|
||||
vSemaphoreCreateBinary(xSemaphore_ctl);
|
||||
xSemaphoreTake(xSemaphore_ctl, 0);
|
||||
for (;;)
|
||||
{
|
||||
xSemaphoreTake(xSemaphore_ctl, portMAX_DELAY);
|
||||
|
||||
|
||||
vTaskDelay(10000); //先等待gprs回应
|
||||
|
||||
printf("先等待gprs回应\r\n");
|
||||
|
||||
|
||||
//
|
||||
if(0 == ctl_type)
|
||||
{
|
||||
ctl_task_1();
|
||||
}
|
||||
else
|
||||
{
|
||||
ctl_task_2();
|
||||
}
|
||||
xSemaphoreTake(xSemaphore_ctl, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user