From d7ad579e8dafeffa8debd46d7918987f8534e4aa Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 11 Mar 2021 09:49:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=8C=89=E9=94=AE=E6=97=A0=E6=95=88=E9=97=AE?= =?UTF-8?q?=E9=A2=9811?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/app/app_task_tcp.c | 2 +- source/app/app_task_tcp.c.bak | 109 ++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 source/app/app_task_tcp.c.bak diff --git a/source/app/app_task_tcp.c b/source/app/app_task_tcp.c index 2e9b203..d67fff9 100644 --- a/source/app/app_task_tcp.c +++ b/source/app/app_task_tcp.c @@ -44,7 +44,7 @@ void L3_task_tcp_handle(TS_tcp *s) } TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包 - //L0_uart0_sendArray((U8*)&s->loopPkg,s->pkglen); + L0_uart0_sendArray((U8*)&s->loopPkg,s->pkglen); L3_gm35_send((U8*)&s->loopPkg,s->pkglen); s->sendStamp = s_nos_tick.t_1s; if(G.ccmd_slaver_info[s->slaverIndex].mask == 1) diff --git a/source/app/app_task_tcp.c.bak b/source/app/app_task_tcp.c.bak new file mode 100644 index 0000000..2e9b203 --- /dev/null +++ b/source/app/app_task_tcp.c.bak @@ -0,0 +1,109 @@ +#include "app_task_tcp.h" +#include "../msp/uart0.h" +#include "../msp/uart4.h" +#include "../app/app_task_gm35.h" +#include "../app/app_common.h" + +#define MODBUS_SLAVER_DW20_REG_START 0x02 +#define MODBUS_SLAVER_DW20_REG_NUM 0x02 +#define MODBUS_SLAVER_RETRY_MAX_TIME 1 + +TS_tcp ts_tcp; + +void L3_task_tcp_init(void) +{ + L1_task_init(&ts_tcp.task); + L3_task_s_go(ts_tcp,D_task_init); + ts_tcp.slaverIndex = 0; + ts_tcp.pkglen = 0; + ts_tcp.retryTimes = 0; + ts_tcp.ackFlag = 0; +} + +#define D_task_tcp_constructor_modbus_pkg 0x51 +#define D_task_tcp_send_modbus_pkg 0x52 +#define D_task_tcp_wait_modbus_ack 0x53 +#define D_task_tcp_switch_next_slaver 0x54 + +void L3_task_tcp_handle(TS_tcp *s) +{ + TTSS_Task_init(); + L2_task_go(D_task_tcp_constructor_modbus_pkg); + + TTSS_Task_step(D_task_tcp_constructor_modbus_pkg) //构造包 + if(G.ccmd_slaver_info[s->slaverIndex].mask > 0) + { + s->pkglen = L3_pack_ccmodbus(&s->loopPkg,G.ccmd_slaver_info + s->slaverIndex); + s->ackFlag = 0; + s->retryTimes = 0; + L2_task_go(D_task_tcp_send_modbus_pkg); + } + else + { + L2_task_go(D_task_tcp_switch_next_slaver); + } + + TTSS_Task_step(D_task_tcp_send_modbus_pkg) //发送包 + //L0_uart0_sendArray((U8*)&s->loopPkg,s->pkglen); + L3_gm35_send((U8*)&s->loopPkg,s->pkglen); + s->sendStamp = s_nos_tick.t_1s; + if(G.ccmd_slaver_info[s->slaverIndex].mask == 1) + { + G.ccmd_slaver_info[s->slaverIndex].mask = 0; + } + L2_task_go(D_task_tcp_wait_modbus_ack); + + TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack + if(s_uart4_tcp_rec.ok) + { + s_uart4_tcp_rec.ok = 0; + g_at_send_status.tcp_last_recv_stmp = s_nos_tick.t_1s; + + s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart4_tcp_rec.sp); + L0_uart0_sendArray((U8*)s->pAckPkg,s->pAckPkg->num + 3); + if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver) + { + s->ackFlag = 1; + switch(s->slaverIndex) + { + case 0: + G.authed = 1; + break; + case 2: + G.flowStarted = 1; + break; + 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或者超时 + { + L2_task_go(D_task_tcp_switch_next_slaver); + } + + TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个 + if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX) + { + s->slaverIndex = 0; + } + L2_task_go(D_task_tcp_constructor_modbus_pkg); + + TTSS_Task_end(); +} + +