From 09994506b9091d41a14c819734691aab5f49e3e1 Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 3 Jun 2021 14:15:58 +0800 Subject: [PATCH] =?UTF-8?q?v2.0.1=20=E4=BC=98=E5=8C=96gm35=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keilp/cc_as_stc02_gsm_main.uvproj | 10 + .../soft_gsm_main.sip_sym | Bin 729512 -> 512432 bytes .../soft_gsm_main.siwork | Bin 39434 -> 93015 bytes source/app/app_common.c | 73 +++- source/app/app_common.h | 108 +---- source/app/app_drv.c | 35 +- source/app/app_task_gm35.c | 170 +++----- source/app/app_task_gm35.c.1 | 411 ++++++++++++++++++ source/app/app_task_gm35.h | 16 +- source/app/app_task_gm35.h.1 | 108 +++++ source/app/app_task_tcp.c | 14 - source/app/app_task_wdt.c | 4 +- source/app/app_task_wdt.h | 5 - source/app/main.c | 14 +- source/bsp/bsp_config.c | 9 +- 15 files changed, 707 insertions(+), 270 deletions(-) create mode 100644 source/app/app_task_gm35.c.1 create mode 100644 source/app/app_task_gm35.h.1 diff --git a/keilp/cc_as_stc02_gsm_main.uvproj b/keilp/cc_as_stc02_gsm_main.uvproj index 0d90277..ad5c857 100644 --- a/keilp/cc_as_stc02_gsm_main.uvproj +++ b/keilp/cc_as_stc02_gsm_main.uvproj @@ -416,6 +416,11 @@ 1 ..\source\app\app_task_gm35.c + + app_task_wdt.c + 1 + ..\source\app\app_task_wdt.c + @@ -496,6 +501,11 @@ 1 ..\source\bsp\bsp_relay.c + + bsp_wdt.c + 1 + ..\source\bsp\bsp_wdt.c + diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym index c0c880af4845a4d7c896696cfbb5bec3e431e32a..a9b59b7be5fc9980a9776186896507889ad81772 100644 GIT binary patch delta 6081 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 delta 7073 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 diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.siwork b/si4/soft_gsm_main.si4project/soft_gsm_main.siwork index 190b81fc6f108ffb8e0fd86dbfb9fce75cebb8bc..1e53d5455adb6efe0bbb36cc28c8d4a2a1494dd9 100644 GIT binary patch literal 93015 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 literal 39434 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 ) { - #if 1 + #if 0 + //U8 array[D_s_SSTR_0D0A_len+1]; U8 num = p->buf[0]; byte_copy_uc(array,p->buf+1,num); - + array[num] = 0; L3_protocol_handler_uart4_fun(array); + p->ok = 0; #else - if(p->buf[0] > D_s_SSTR_0D0A_len) - { - p->buf[0] = D_s_SSTR_0D0A_len; - } - p->buf[p->buf[0]] = 0; - L3_protocol_handler_uart4_fun(p->buf + 1); - #endif + g_at_send_status.gprs_last_recv_stmp = s_nos_tick.t_1s; + L3_protocol_handler_uart4_fun(p->buf+1); p->ok = 0; + #endif } } - -void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) +void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p) { if (1 == p->ok) { @@ -95,11 +92,25 @@ void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) } -void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p) +void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) { if (1 == p->ok) { + #if 0 + TS_PH3_ccmodbus ccmodbus; + byte_copy_uc((U8*)&ccmodbus,(U8*)&p->ts_ccmodbus,p->ts_ccmodbus.num + 3); + if(ccmodbus.buf[0] != G._rfid) //rfid发生改变 + { + G.rfid = G._rfid = ccmodbus.buf[0]; + } + #else + if(p->ts_ccmodbus.buf[0] != G._rfid) //rfid发生改变 + { + G.rfid = G._rfid = p->ts_ccmodbus.buf[0]; + } + #endif p->ok = 0; } } + diff --git a/source/app/app_task_gm35.c b/source/app/app_task_gm35.c index fb63b28..c2a497b 100644 --- a/source/app/app_task_gm35.c +++ b/source/app/app_task_gm35.c @@ -66,34 +66,26 @@ void L3_gm35_send(U8 *buf , U8 len) void L3_task_gm35_flow_init(void) { - U8 i = 0; - - //task init; L1_task_init(&s_task_gm35_flow.task); L3_task_s_go(s_task_gm35_flow,D_task_init); - - //data init; g_at_send_status.send_lock = 0; g_at_send_status.module_ok = 0; g_at_send_status.sim_ok = 0; g_at_send_status.net_ok = 0; g_at_send_status.gprs_ok = 0; - g_at_send_status.conn_ok = 0; - g_at_send_status.status = STATUS_GM35_INIT; - - g_at_send_status.heart_stmp = 0; - g_at_send_status.data_stmp = 0; + g_at_send_status.conn_ok = 0; + + g_at_send_status.ins_stmp = 0; //每次发送指令时设置 + g_at_send_status.heart_stmp = 0; //连接成功时设置 + g_at_send_status.data_stmp = 0; g_at_send_status.sign_flag = 0; - g_at_send_status.heart_flag = 0; - g_at_send_status.data_flag = 0; - g_at_send_status.ack_flag = 0; - - g_at_send_status.ins_flag = 0; - - g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; //重新上电和检测到断开时设置 - g_at_send_status.ins_stmp = 0; //每次发送指令时设置 + g_at_send_status.ack_flag = 0; + + g_at_send_status.gprs_last_recv_stmp = 0; //接收到指令时设置 g_at_send_status.tcp_last_recv_stmp = 0; //连接成功和接收到数据时设置 + g_at_send_status.tcp_close_stmp = 0; //重新上电和检测到断开时设置 + g_at_send_status.gm35_reboot_times = 0; //连接成功时清0 } void L3_task_gm35_daemon_init(void) @@ -111,9 +103,10 @@ void L3_task_gm35_daemon_init(void) #define TTSS_TASK_GM35_DAEMON_REBOOT2 0x06 #define TTSS_TASK_BOARD_REBOOT 0x0A +#define GPRS_MAX_IDLE 20 #define TCP_MAX_IDLE 130 #define TCP_MAX_DISCONN 120 -#define GM35_REBOOT_MAXTIMES 10 +#define TCP_MAX_GM35_REBOOT_TIMES 3 void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s) { @@ -121,84 +114,43 @@ void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s) L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_10s); TTSS_Task_step(TTSS_TASK_GM35_DAEMON_CIPSTATUS) - if(0 == g_at_send_status.send_lock) - { - L0_uart4_sendstr(AT_INS_CIPSTATUS); - } + //if(0 == g_at_send_status.send_lock) + //{ + L0_uart4_sendstr(AT_INS_CIPSTATUS); L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_JUDGE,D_Tdelay_2s); + //} TTSS_Task_step(TTSS_TASK_GM35_DAEMON_JUDGE) - if(1 == g_at_send_status.conn_ok) + if(1 == g_at_send_status.conn_ok) //已连接 { - if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp > TCP_MAX_IDLE * 2) - { - //g_at_send_status.conn_ok = 0; //强制关闭连接 - //g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; - //L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_JUDGE,D_Tdelay_1s); - - L0_uart0_sendstr("GM35 reboot."); - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT0,0); //重启GM35 - } - else if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp > TCP_MAX_IDLE) + if(s_nos_tick.t_1s - g_at_send_status.gprs_last_recv_stmp > GPRS_MAX_IDLE) //连续GPRS_MAX_IDLE秒没有收到 AT指令 { - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CLOSE0,0); //关闭连接 + //关闭连接 + g_at_send_status.conn_ok = 0; } - else + else if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp > TCP_MAX_IDLE) //连续TCP_MAX_IDLE秒没有收到 协议数据 { - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + //关闭连接 + g_at_send_status.conn_ok = 0; + L0_uart4_sendstr(AT_INS_CLOSED); } } - else + else //未连接 { - if(g_at_send_status.gm35_reboot_times >= GM35_REBOOT_MAXTIMES) - { - L0_uart0_sendstr("Board reboot."); - g_at_send_status.gm35_reboot_times = 0; //重启需要时间,这里提前设置一下 - - //不写入继电器状态,重启自动回到初始状态 - //L3_flash_write_page0(); //写继电器状态 - L2_task_go_Tdelay(TTSS_TASK_BOARD_REBOOT,0); //重启板卡 - } - else if(s_nos_tick.t_1s - g_at_send_status.tcp_close_stmp > TCP_MAX_DISCONN) - { - L0_uart0_sendstr("GM35 reboot."); - g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT0,0); //重启GM35 - } - else + if(s_nos_tick.t_1s - g_at_send_status.tcp_close_stmp > TCP_MAX_DISCONN) { - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + if(++g_at_send_status.gm35_reboot_times >= TCP_MAX_GM35_REBOOT_TIMES) + { + L2_do_board_reset(); + } + else + { + L2_do_gm35_reset(); + g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; + } } } - - TTSS_Task_step(TTSS_TASK_GM35_DAEMON_CLOSE0) - L0_uart4_sendstr(AT_INS_CLOSED); - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); -#ifdef BOARD_MAIN04_GM35_M42 - TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT0) - //set low - L2_gm35_disable(); - g_at_send_status.gm35_reboot_times++; - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT1,D_Tdelay_1s); - TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT1) - //set high - L2_gm35_enable(); - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT2,D_Tdelay_1s); -#elif defined BOARD_MAIN03_A9 - TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT0) - L0_uart4_sendstr(AT_RESET); - g_at_send_status.gm35_reboot_times++; - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT2,D_Tdelay_1s); -#endif - - TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT2) - L3_task_gm35_flow_init(); - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); - - TTSS_Task_step(TTSS_TASK_BOARD_REBOOT) - //s_task_wdt.seed_flag = FLAG_WDT_hunger; //饿死看门狗 - L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); - + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_10s); TTSS_Task_end(); } @@ -216,7 +168,7 @@ void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s) #define TTSS_TASK_GM35_FLOW_CIPSTART_WAIT 0x0A #define TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS 0x0B -#define INS_TIMEOUT 10 +#define INS_TIMEOUT 2 #define GM35_SEND_DATA_INTERVAL 300 #define GM35_SEND_HEART_INTERVAL 60 #define GM35_SEND_CIPSTATUS_INTERVAL 5 @@ -224,7 +176,10 @@ void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s) void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) { TTSS_Task_init() - L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_2s);//上电等待10s + //data init; + G.boardstatus.a9RecvDataInterval = 0; + G.boardstatus.a9Status = 0; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_10s);//上电等待10s TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV) L0_uart4_sendstr(AT_INS_ATEQV); @@ -260,10 +215,11 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) if(1 == g_at_send_status.sim_ok) { //Lc_print_buf("ccid: %s,",G.ccid); + L0_uart0_uc('C'); L0_uart0_sendArray(G.ccid,20); Lc_delay_ms(100);// 2000--7s - //L0_uart0_uc('S'); - //L0_uart0_sendArray(G.ccid_passwd,21); + L0_uart0_uc('S'); + L0_uart0_sendArray(G.ccid_passwd,21); //Lc_print_buf("%s\r\n",G.ccid_passwd); G.boardstatus.a9Status = STATUS_GM35_SIM_OK;//修改状态 @@ -290,7 +246,6 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CREG_WAIT) if(1 == g_at_send_status.net_ok) { - L0_uart0_sendstr("net ok"); G.boardstatus.a9Status = STATUS_GM35_NET_OK;//修改状态 L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS,0); } @@ -315,7 +270,6 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) TTSS_Task_step(TTSS_TASK_GM35_FLOW_GPRS_WAIT) if(1 == g_at_send_status.gprs_ok) { - L0_uart0_sendstr("gprs ok"); G.boardstatus.a9Status = STATUS_GM35_GPRS_OK;//修改状态 L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,0); } @@ -332,8 +286,6 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) } TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART) - L0_uart0_uc('L'); - L0_uart0_uc( g_at_send_status.conn_ok + '0'); L0_uart4_sendstr(AT_INS_CIPSTART); g_at_send_status.conn_ok = 0; g_at_send_status.ins_stmp = s_nos_tick.t_1s; @@ -342,20 +294,12 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT) if(1 == g_at_send_status.conn_ok) { - L0_uart0_sendstr("conn ok"); - //L3_task_gm35_send_init(); //初始化发送任务 - g_at_send_status.heart_stmp = s_nos_tick.t_1s; g_at_send_status.data_stmp = s_nos_tick.t_1s;//连接成功后立刻发送账号密码 - g_at_send_status.sign_flag = 1; - g_at_send_status.heart_flag = 0; - g_at_send_status.data_flag = 0; //login g_at_send_status.ack_flag = 0; - //g_at_send_status.pending_flag = 0; - g_at_send_status.tcp_last_recv_stmp = s_nos_tick.t_1s; //设置数据接收时间 - g_at_send_status.gm35_reboot_times = 0; //gm35重启次数清0 + g_at_send_status.tcp_conn_stmp = s_nos_tick.t_1s; //记录连接时间 G.boardstatus.a9Status = STATUS_GM35_TCP_OK;//修改状态 L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS,0); } @@ -374,21 +318,16 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS) if(1 == g_at_send_status.conn_ok) { - //连续20s没有收到数据,断线重连 - if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp >= 60) //20 - { - L0_uart0_uc('D'); - L0_uart4_sendstr(AT_INS_CLOSED); - g_at_send_status.conn_ok = 0; //等待收到close 自动关闭 - } + //do sth... } - - if(0 == g_at_send_status.conn_ok) + else { + g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; + g_at_send_status.gm35_reboot_times = 0; //L0_uart4_uc(0x1a); //关闭send - L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,D_Tdelay_300ms); //断线重连 + L2_task_go_Tdelay(D_task_init,D_Tdelay_100ms); //重新连接、初始化数据 } - + TTSS_Task_end(); } @@ -396,16 +335,15 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) void L3_task_gm35_core_init(void) { - g_at_send_status.gm35_reboot_times = 0; - - //L3_task_gm35_daemon_init(); + L3_task_gm35_daemon_init(); L3_task_gm35_flow_init(); } void L3_task_gm35_core_handle() { - //L2_task_gm35_daemon_handle(&s_task_gm35_daemon); + L2_task_gm35_daemon_handle(&s_task_gm35_daemon); L2_task_gm35_flow_handle(&s_task_gm35_flow); } + diff --git a/source/app/app_task_gm35.c.1 b/source/app/app_task_gm35.c.1 new file mode 100644 index 0000000..942a8db --- /dev/null +++ b/source/app/app_task_gm35.c.1 @@ -0,0 +1,411 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 传控科技 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_test.c.c +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 +////////////////////////////////////////////////////////////////////////////// + +#include "app_task_gm35.h" + +#include "../clib/bit.h" +#include "../clib/clib.h" +#include "../msp/uart0.h" + +#include "../msp/uart4.h" +#include "../app/app_common.h" +#include "../app/app_task_wdt.h" +#include "../app/app_paraid.h" +#include "../app/app_common.h" + +struct _at_send_status g_at_send_status; +struct _s_task_gm35_gprs_ s_task_gm35_flow; +struct _s_task_gm35_gprs_ s_task_gm35_daemon; +// struct _s_task_gm35_gprs_ s_task_gm35_send; + +#define LEN_GPRS_TCP_PKG 18 + +U8 ins_cipsend[30] = "AT+CIPSEND=000\r\n"; + +#define GM35_TCP_CIPSEND(x) L0_uart4_sendstr(x); g_at_send_status.send_lock = 1 +#define GM35_TCP_CIPSEND_COMPLETE() g_at_send_status.send_lock = 0 + +U8 * _cipsend_hex(U8 len) +{ + U8 pos = libc_strlen("AT+CIPSEND="); + ins_cipsend[pos++] = len % 1000 / 100 + '0'; + ins_cipsend[pos++] = len % 100 / 10 + '0'; + ins_cipsend[pos++] = len % 10 / 1 + '0'; + + return ins_cipsend; +} + +//将数据放入gm35待发送缓冲区 +void L3_gm35_send(U8 *buf , U8 len) +{ + //g_at_send_status.tcp_last_send_stmp = s_nos_tick.t_1s; + int i = 0x20000; + GM35_TCP_CIPSEND(_cipsend_hex(len)); + while(i--); + L0_uart4_sendArray(buf,len); + GM35_TCP_CIPSEND_COMPLETE(); +} + + +//------------------------------------------------------ gm35 tasks -------------------------------- + +// void L3_task_gm35_send_init(void) +// { +// L1_task_init(&s_task_gm35_send.task); +// L3_task_s_go(s_task_gm35_send,D_task_init); +// } + +void L3_task_gm35_flow_init(void) +{ + U8 i = 0; + + //task init; + L1_task_init(&s_task_gm35_flow.task); + L3_task_s_go(s_task_gm35_flow,D_task_init); + + //data init; + g_at_send_status.send_lock = 0; + g_at_send_status.module_ok = 0; + g_at_send_status.sim_ok = 0; + g_at_send_status.net_ok = 0; + g_at_send_status.gprs_ok = 0; + g_at_send_status.conn_ok = 0; + g_at_send_status.status = STATUS_GM35_INIT; + + g_at_send_status.heart_stmp = 0; + g_at_send_status.data_stmp = 0; + + g_at_send_status.sign_flag = 0; + g_at_send_status.heart_flag = 0; + g_at_send_status.data_flag = 0; + g_at_send_status.ack_flag = 0; + + g_at_send_status.ins_flag = 0; + + g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; //重新上电和检测到断开时设置 + g_at_send_status.ins_stmp = 0; //每次发送指令时设置 + g_at_send_status.tcp_last_recv_stmp = 0; //连接成功和接收到数据时设置 +} + +void L3_task_gm35_daemon_init(void) +{ + L1_task_init(&s_task_gm35_daemon.task); + L3_task_s_go(s_task_gm35_daemon,D_task_init); +} + +//------------------------ GM35 Daemon Handle ----------------------------------- +#define TTSS_TASK_GM35_DAEMON_CIPSTATUS 0x01 +#define TTSS_TASK_GM35_DAEMON_JUDGE 0x02 +#define TTSS_TASK_GM35_DAEMON_CLOSE0 0x03 +#define TTSS_TASK_GM35_DAEMON_REBOOT0 0x04 +#define TTSS_TASK_GM35_DAEMON_REBOOT1 0x05 +#define TTSS_TASK_GM35_DAEMON_REBOOT2 0x06 +#define TTSS_TASK_BOARD_REBOOT 0x0A + +#define TCP_MAX_IDLE 130 +#define TCP_MAX_DISCONN 120 +#define GM35_REBOOT_MAXTIMES 10 + +void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s) +{ + TTSS_Task_init(); + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_10s); + + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_CIPSTATUS) + if(0 == g_at_send_status.send_lock) + { + L0_uart4_sendstr(AT_INS_CIPSTATUS); + } + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_JUDGE,D_Tdelay_2s); + + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_JUDGE) + if(1 == g_at_send_status.conn_ok) + { + if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp > TCP_MAX_IDLE * 2) + { + //g_at_send_status.conn_ok = 0; //强制关闭连接 + //g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; + //L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_JUDGE,D_Tdelay_1s); + + L0_uart0_sendstr("GM35 reboot."); + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT0,0); //重启GM35 + } + else if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp > TCP_MAX_IDLE) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CLOSE0,0); //关闭连接 + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + } + } + else + { + if(g_at_send_status.gm35_reboot_times >= GM35_REBOOT_MAXTIMES) + { + L0_uart0_sendstr("Board reboot."); + g_at_send_status.gm35_reboot_times = 0; //重启需要时间,这里提前设置一下 + + //不写入继电器状态,重启自动回到初始状态 + //L3_flash_write_page0(); //写继电器状态 + L2_task_go_Tdelay(TTSS_TASK_BOARD_REBOOT,0); //重启板卡 + } + else if(s_nos_tick.t_1s - g_at_send_status.tcp_close_stmp > TCP_MAX_DISCONN) + { + L0_uart0_sendstr("GM35 reboot."); + g_at_send_status.tcp_close_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT0,0); //重启GM35 + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_CLOSE0) + L0_uart4_sendstr(AT_INS_CLOSED); + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); +#ifdef BOARD_MAIN04_GM35_M42 + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT0) + //set low + L2_gm35_disable(); + g_at_send_status.gm35_reboot_times++; + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT1,D_Tdelay_1s); + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT1) + //set high + L2_gm35_enable(); + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT2,D_Tdelay_1s); +#elif defined BOARD_MAIN03_A9 + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT0) + L0_uart4_sendstr(AT_RESET); + g_at_send_status.gm35_reboot_times++; + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_REBOOT2,D_Tdelay_1s); +#endif + + TTSS_Task_step(TTSS_TASK_GM35_DAEMON_REBOOT2) + L3_task_gm35_flow_init(); + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + + TTSS_Task_step(TTSS_TASK_BOARD_REBOOT) + //s_task_wdt.seed_flag = FLAG_WDT_hunger; //饿死看门狗 + L2_task_go_Tdelay(TTSS_TASK_GM35_DAEMON_CIPSTATUS,D_Tdelay_3s); + + TTSS_Task_end(); +} + +//------------------------ GM35 Flow Handle ----------------------------------- + +#define TTSS_TASK_GM35_FLOW_ATEQV 0x01 +#define TTSS_TASK_GM35_FLOW_ATEQV_WAIT 0x02 +#define TTSS_TASK_GM35_FLOW_CCID 0x03 +#define TTSS_TASK_GM35_FLOW_CCID_WAIT 0x04 +#define TTSS_TASK_GM35_FLOW_CREG 0x05 +#define TTSS_TASK_GM35_FLOW_CREG_WAIT 0x06 +#define TTSS_TASK_GM35_FLOW_GPRS 0x07 +#define TTSS_TASK_GM35_FLOW_GPRS_WAIT 0x08 +#define TTSS_TASK_GM35_FLOW_CIPSTART 0x09 +#define TTSS_TASK_GM35_FLOW_CIPSTART_WAIT 0x0A +#define TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS 0x0B + +#define INS_TIMEOUT 10 +#define GM35_SEND_DATA_INTERVAL 300 +#define GM35_SEND_HEART_INTERVAL 60 +#define GM35_SEND_CIPSTATUS_INTERVAL 5 + +void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s) +{ + TTSS_Task_init() + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,D_Tdelay_2s);//上电等待10s + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV) + L0_uart4_sendstr(AT_INS_ATEQV); + g_at_send_status.module_ok = 0; + g_at_send_status.ins_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV_WAIT,D_Tdelay_300ms); //指令发送完毕等待300ms + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_ATEQV_WAIT) + if(1 == g_at_send_status.module_ok) + { + G.boardstatus.a9Status = STATUS_GM35_MODULE_OK;//修改状态 + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CCID,0); + } + else + { + if(s_nos_tick.t_1s - g_at_send_status.ins_stmp > INS_TIMEOUT) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV,0); + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_ATEQV_WAIT,D_Tdelay_300ms); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CCID) + L0_uart4_sendstr(AT_INS_CCID); + g_at_send_status.sim_ok = 0; + g_at_send_status.ins_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CCID_WAIT,D_Tdelay_300ms); //指令发送完毕等待300ms + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CCID_WAIT) + if(1 == g_at_send_status.sim_ok) + { + //Lc_print_buf("ccid: %s,",G.ccid); + L0_uart0_sendArray(G.ccid,20); + Lc_delay_ms(100);// 2000--7s + //L0_uart0_uc('S'); + //L0_uart0_sendArray(G.ccid_passwd,21); + //Lc_print_buf("%s\r\n",G.ccid_passwd); + + G.boardstatus.a9Status = STATUS_GM35_SIM_OK;//修改状态 + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CREG,0); + } + else + { + if(s_nos_tick.t_1s - g_at_send_status.ins_stmp > INS_TIMEOUT) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CCID,0); + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CCID_WAIT,D_Tdelay_300ms); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CREG) + L0_uart4_sendstr(AT_INS_CREG); + g_at_send_status.net_ok = 0; + g_at_send_status.ins_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CREG_WAIT,D_Tdelay_300ms); //指令发送完毕等待300ms + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CREG_WAIT) + if(1 == g_at_send_status.net_ok) + { + L0_uart0_sendstr("net ok"); + G.boardstatus.a9Status = STATUS_GM35_NET_OK;//修改状态 + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS,0); + } + else + { + if(s_nos_tick.t_1s - g_at_send_status.ins_stmp > INS_TIMEOUT) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CREG,0); + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CREG_WAIT,D_Tdelay_300ms); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_GPRS) + L0_uart4_sendstr(AT_INS_GPRS); + g_at_send_status.gprs_ok = 0; + g_at_send_status.ins_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS_WAIT,D_Tdelay_300ms); //指令发送完毕等待300ms + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_GPRS_WAIT) + if(1 == g_at_send_status.gprs_ok) + { + L0_uart0_sendstr("gprs ok"); + G.boardstatus.a9Status = STATUS_GM35_GPRS_OK;//修改状态 + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,0); + } + else + { + if(s_nos_tick.t_1s - g_at_send_status.ins_stmp > INS_TIMEOUT) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS,0); + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS_WAIT,D_Tdelay_300ms); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART) + L0_uart0_uc('L'); + L0_uart0_uc( g_at_send_status.conn_ok + '0'); + L0_uart4_sendstr(AT_INS_CIPSTART); + g_at_send_status.conn_ok = 0; + g_at_send_status.ins_stmp = s_nos_tick.t_1s; + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT,D_Tdelay_300ms); //指令发送完毕等待300ms + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT) + if(1 == g_at_send_status.conn_ok) + { + L0_uart0_sendstr("conn ok"); + //L3_task_gm35_send_init(); //初始化发送任务 + + g_at_send_status.heart_stmp = s_nos_tick.t_1s; + g_at_send_status.data_stmp = s_nos_tick.t_1s;//连接成功后立刻发送账号密码 + + g_at_send_status.sign_flag = 1; + g_at_send_status.heart_flag = 0; + g_at_send_status.data_flag = 0; //login + g_at_send_status.ack_flag = 0; + //g_at_send_status.pending_flag = 0; + + g_at_send_status.tcp_last_recv_stmp = s_nos_tick.t_1s; //设置数据接收时间 + g_at_send_status.gm35_reboot_times = 0; //gm35重启次数清0 + G.boardstatus.a9Status = STATUS_GM35_TCP_OK;//修改状态 + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS,0); + } + else + { + if(s_nos_tick.t_1s - g_at_send_status.ins_stmp > INS_TIMEOUT) + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,0); + } + else + { + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT,D_Tdelay_300ms); + } + } + + TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS) + if(1 == g_at_send_status.conn_ok) + { + //连续20s没有收到数据,断线重连 + if(s_nos_tick.t_1s - g_at_send_status.tcp_last_recv_stmp >= 60) //20 + { + L0_uart0_uc('D'); + L0_uart4_sendstr(AT_INS_CLOSED); + g_at_send_status.conn_ok = 0; //等待收到close 自动关闭 + } + } + + if(0 == g_at_send_status.conn_ok) + { + //L0_uart4_uc(0x1a); //关闭send + L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,D_Tdelay_300ms); //断线重连 + } + + TTSS_Task_end(); +} + +//------------------------ GM35 Core Handle ----------------------------------- + +void L3_task_gm35_core_init(void) +{ + g_at_send_status.gm35_reboot_times = 0; + + //L3_task_gm35_daemon_init(); + L3_task_gm35_flow_init(); +} + +void L3_task_gm35_core_handle() +{ + //L2_task_gm35_daemon_handle(&s_task_gm35_daemon); + L2_task_gm35_flow_handle(&s_task_gm35_flow); +} + + diff --git a/source/app/app_task_gm35.h b/source/app/app_task_gm35.h index c909e58..26891a8 100644 --- a/source/app/app_task_gm35.h +++ b/source/app/app_task_gm35.h @@ -24,11 +24,9 @@ #define AT_INS_CCID "AT+CCID\r\n" //SIM卡查询指令 #define AT_INS_CREG "AT+CREG?\r\n" //网络查询指令 #define AT_INS_GPRS "AT+CGATT=1;+CGDCONT=1,\"IP\",\"CMNET\";+CGACT=1,1\r\n" //GPRS操作指令 -//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",38195\r\n" #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n" -//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" //#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"weizezhao.imwork.net\",49809\r\n" //连接服务器 -// #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" //连接服务器 +//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",49000\r\n" //连接服务器 #define AT_INS_CIPSEND "AT+CIPSEND\r\n" //发送数据 #define AT_INS_CLOSED "AT+CIPCLOSE\r\n" //主动关闭连接 #define AT_INS_CIPSTATUS "AT+CIPSTATUS\r\n" //查询连接状态 @@ -61,20 +59,23 @@ struct _at_send_status vU8 net_ok; vU8 gprs_ok; vU8 conn_ok; - vU8 status; + vU8 status_query_ok; + //vU8 status; vU32 ins_stmp; //指令时间戳 + vU32 gprs_last_recv_stmp; //上次接收指令时间戳 vU32 tcp_last_recv_stmp; //上次接收数据时间戳 + vU32 tcp_conn_stmp; //断开连接时间戳 vU32 tcp_close_stmp; //断开连接时间戳 vU32 heart_stmp; //连接成功后,等待发送时间 vU32 data_stmp;//数据发送时间记录 vU8 sign_flag; //发送登录数据标志 - vU8 heart_flag; //发送心跳标志 - vU8 data_flag;//定时发送数据标志 + //vU8 heart_flag; //发送心跳标志 + //vU8 data_flag;//定时发送数据标志 vU8 ack_flag;//下行数据ack vU8 gm35_reboot_times; //gm35重启次数 - vU8 ins_flag; //at指令ok标志 + //vU8 ins_flag; //at指令ok标志 }; extern struct _at_send_status g_at_send_status; @@ -105,4 +106,5 @@ extern void L3_gm35_send(U8 *d , U8 len); + diff --git a/source/app/app_task_gm35.h.1 b/source/app/app_task_gm35.h.1 new file mode 100644 index 0000000..9859829 --- /dev/null +++ b/source/app/app_task_gm35.h.1 @@ -0,0 +1,108 @@ +//////////////////////////////////////////////////////////////////////////// +///@copyright Copyright (c) 2018, 传控科技 All rights reserved. +///------------------------------------------------------------------------- +/// @file bsp_gc6133.c.h +/// @brief bsp @ driver config +///------------------------------------------------------------------------- +/// @version 1.0 +/// @author CC +/// @date 20180331 +/// @note cc_AS_stc02 + +////////////////////////////////////////////////////////////////////////////// + +#ifndef _app_gm35_gprs_H +#define _app_gm35_gprs_H + +#include "../bsp/bsp_config.h" +#include "../bsp/bsp_gm35.h" +#include "../tpc/tpc_uart.h" +#include "../ctask/task.h" + +////<<<<<<<<<<<<<<<<<<< GM35模块 AT操作指令 <<<<<<<<<<<<<<<<<<<<<<<< +#define AT_INS_ATEQV "ATE0Q0V1\r\n" //模块查询指令 +#define AT_INS_CCID "AT+CCID\r\n" //SIM卡查询指令 +#define AT_INS_CREG "AT+CREG?\r\n" //网络查询指令 +#define AT_INS_GPRS "AT+CGATT=1;+CGDCONT=1,\"IP\",\"CMNET\";+CGACT=1,1\r\n" //GPRS操作指令 +//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",38195\r\n" +#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n" +//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" +//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"weizezhao.imwork.net\",49809\r\n" //连接服务器 +// #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" //连接服务器 +#define AT_INS_CIPSEND "AT+CIPSEND\r\n" //发送数据 +#define AT_INS_CLOSED "AT+CIPCLOSE\r\n" //主动关闭连接 +#define AT_INS_CIPSTATUS "AT+CIPSTATUS\r\n" //查询连接状态 +#define AT_INS_CSQ "AT+CSQ\r\n" //查询信号指令 + +#define AT_RESET "AT+RST=2\r\n" //a9重启指令 AT+RST=2硬件重启(vUSB供电) AT+RST=1软件重启 + +////<<<<<<<<<<<<<<<<<<<_s_task_test_<<<<<<<<<<<<<<<<<<<<<<<< +struct _s_task_gm35_gprs_ +{ + TS_task task; +}; + +#define STATUS_GM35_INIT 0 +#define STATUS_GM35_MODULE_OK 1 +#define STATUS_GM35_SIM_OK 2 +#define STATUS_GM35_NET_OK 3 +#define STATUS_GM35_GPRS_OK 4 +#define STATUS_GM35_TCP_OK 5 + + +#define BUF_SIZE 5 +#define BUF_MAX 32 //注意缓冲区的长度 + +struct _at_send_status +{ + vU8 send_lock; + vU8 module_ok; + vU8 sim_ok; + vU8 net_ok; + vU8 gprs_ok; + vU8 conn_ok; + vU8 status; + vU32 ins_stmp; //指令时间戳 + vU32 tcp_last_recv_stmp; //上次接收数据时间戳 + vU32 tcp_close_stmp; //断开连接时间戳 + + vU32 heart_stmp; //连接成功后,等待发送时间 + vU32 data_stmp;//数据发送时间记录 + + vU8 sign_flag; //发送登录数据标志 + vU8 heart_flag; //发送心跳标志 + vU8 data_flag;//定时发送数据标志 + vU8 ack_flag;//下行数据ack + vU8 gm35_reboot_times; //gm35重启次数 + vU8 ins_flag; //at指令ok标志 +}; + +extern struct _at_send_status g_at_send_status; +extern struct _s_task_gm35_gprs_ s_task_gm35_gprs; +extern struct _s_task_gm35_gprs_ s_task_connect_gprs; + +extern void L3_task_gm35_core_init(void); +extern void L3_task_gm35_core_handle(void); +extern void L3_gm35_send(U8 *d , U8 len); + +#endif + + + + + + + + + + + + + + + + + + + + diff --git a/source/app/app_task_tcp.c b/source/app/app_task_tcp.c index d67fff9..da41485 100644 --- a/source/app/app_task_tcp.c +++ b/source/app/app_task_tcp.c @@ -75,20 +75,6 @@ void L3_task_tcp_handle(TS_tcp *s) default: break; } - #if 0 - if(s->pAckPkg->oper == MODBUS_OPER_WRITE_M) - { - s->treg = (U16)(s->pAckPkg->buf[0]) << 8 | (U16)(s->pAckPkg->buf[1]); - if(s->treg == G.ccmd_slaver_info[0].reg) - { - G.authed = 1; - } - else if(s->treg == G.ccmd_slaver_info[2].reg) - { - G.flowStarted = 1; - } - } - #endif } } if(s->ackFlag == 1 || s_nos_tick.t_1s - s->sendStamp >= 5) //收到ack或者超时 diff --git a/source/app/app_task_wdt.c b/source/app/app_task_wdt.c index 899cfee..981d0d6 100644 --- a/source/app/app_task_wdt.c +++ b/source/app/app_task_wdt.c @@ -1,6 +1,7 @@ #include "app_task_wdt.h" #include "../bsp/bsp_wdt.h" #include "../msp/uart0.h" +#include "app_common.h" struct _s_task_wdt s_task_wdt; @@ -8,7 +9,6 @@ void L3_task_wdt_init(void) { L1_task_init(&s_task_wdt.task); L3_task_s_go(s_task_wdt,D_task_init); - s_task_wdt.seed_flag = FLAG_WDT_SEED; } #define TTSS_TASK_WDT_STP_01 0x1 @@ -18,7 +18,7 @@ void L3_task_wdt_handle(struct _s_task_wdt *s) TTSS_Task_init() L2_task_go(TTSS_TASK_WDT_STP_01); TTSS_Task_step(TTSS_TASK_WDT_STP_01) - if(FLAG_WDT_SEED == s->seed_flag) + if(G.reset == 0) { L0_wdt_feed(); } diff --git a/source/app/app_task_wdt.h b/source/app/app_task_wdt.h index a2f6d57..a94ccf1 100644 --- a/source/app/app_task_wdt.h +++ b/source/app/app_task_wdt.h @@ -6,14 +6,9 @@ struct _s_task_wdt { TS_task task; - vU8 seed_flag; }; -#define FLAG_WDT_SEED 0 -#define FLAG_WDT_hunger 1 - extern struct _s_task_wdt s_task_wdt; - extern void L3_task_wdt_init(); extern void L3_task_wdt_handle(struct _s_task_wdt *s); diff --git a/source/app/main.c b/source/app/main.c index a61defd..f7eef89 100644 --- a/source/app/main.c +++ b/source/app/main.c @@ -74,7 +74,7 @@ void L0_main_init(void) Lc_delay_ms(700);// 2000--7s ///step: 7>>>>>>>>>寄存器默认初始化>>>>>>>>>>>>> - Lu_register_init(); + L2_register_init(); //L3_flash_write_page0(); #if 0 ///step: 5>>>>>>>>>看门狗>>>>>>>>>>>>> @@ -136,7 +136,11 @@ void main(void) L0_uart0_uc('#'); } } - //串口3 RFID接收 + //看门狗 + L3_task_wdt_handle(&s_task_wdt); + + //串口0,3 RFID接收 + L3_UARTcom0_exp_protocol(&s_uart0_rec); L3_UARTcom3_exp_protocol(&s_uart3_rec); //485轮询 @@ -147,17 +151,17 @@ void main(void) #if 1 //gm35维持连接 L3_task_gm35_core_handle(); + + //解析串口4协议(gsm模块收到的at响应消息+服务器发送消息) L3_UARTcom4_exp_protocol(&s_uart4_at_rec); //tcp发送 L3_task_tcp_handle(&ts_tcp); - //master->slaver发送逻辑控制 + //tcp master->slaver发送逻辑控制 L3_task_tcp_control_handle(&ts_tcp_control); #endif } }//end main - - diff --git a/source/bsp/bsp_config.c b/source/bsp/bsp_config.c index b1e93ae..10bdc53 100644 --- a/source/bsp/bsp_config.c +++ b/source/bsp/bsp_config.c @@ -193,7 +193,7 @@ void L0_cpu_init(void) } //------------------------------串口协议配置 ------------------------------------ -//TS_Handle_PH3 s_uart0_rec; +TS_Handle_PH3 s_uart0_rec; TS_Handle_PH4 s_uart2_rec; TS_Handle_PH3 s_uart3_rec; TS_Handle_0d0a s_uart4_at_rec; @@ -211,15 +211,12 @@ void L1_s2b_PH4_2(unsigned char sbufreg) L1_s2b_PH4(&s_uart2_rec); } -#if 0 //uart0 void L1_s2b_PH3_0(unsigned char sbufreg) { s_uart0_rec.reg = sbufreg; L1_s2b_PH3(&s_uart0_rec); } -#endif - //uart3 void L1_s2b_PH3_3(unsigned char sbufreg) @@ -247,7 +244,7 @@ void L1_s2b_gm35(unsigned char sbufreg) void L1_uart_tpc_config(void) { -#if 0 +#if 1 //uart0 protocol setting... s_uart0_rec.head = 0; s_uart0_rec.ok = 0; @@ -281,7 +278,7 @@ void L1_uart_tpc_config(void) s_uart4_tcp_rec.head_1 = D_CMD_Filter2_fe; s_uart4_tcp_rec.sp = (U8*)&(s_uart4_tcp_rec.ts_ccmodbus); - //Lp0_uart0_fun = L1_s2b_PH3_0; + Lp0_uart0_fun = L1_s2b_PH3_0; Lp0_uart2_fun = L1_s2b_PH4_2; Lp0_uart3_fun = L1_s2b_PH3_3; Lp0_uart4_fun = L1_s2b_gm35;