Browse Source

测试0k

master
zhangsan 5 years ago
parent
commit
1bea7f150e
  1. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym
  2. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siwork
  3. 4
      source/app/app_common.c
  4. 2
      source/app/app_common.h
  5. 11
      source/app/app_task_gm35.c
  6. 69
      source/app/app_task_tcp.c
  7. 1
      source/app/app_task_tcp.h
  8. 21
      source/app/app_task_tcp_control.c

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.siwork

Binary file not shown.

4
source/app/app_common.c

@ -93,7 +93,7 @@ void Lu_register_init()
G.ccmd_slaver_info[2].reg = 0x03; G.ccmd_slaver_info[2].reg = 0x03;
G.ccmd_slaver_info[2].regnum = 0x01; G.ccmd_slaver_info[2].regnum = 0x01;
G.ccmd_slaver_info[2].bytes = G.ccmd_slaver_info[2].regnum * 2; G.ccmd_slaver_info[2].bytes = G.ccmd_slaver_info[2].regnum * 2;
G.ccmd_slaver_info[2].buf = (U8*)&G.flowStarted; G.ccmd_slaver_info[2].buf = (U8*)&G.flowStartVal;
G.ccmd_slaver_info[2].mask = 0; G.ccmd_slaver_info[2].mask = 0;
G.ccmd_slaver_info[3].slaver = SLAVER_TCP_SERVER_ID; //�务� G.ccmd_slaver_info[3].slaver = SLAVER_TCP_SERVER_ID; //�务�
@ -107,9 +107,9 @@ void Lu_register_init()
G.modbusstmp = 0; G.modbusstmp = 0;
G.authed = 0; G.authed = 0;
G.flowStarted = 0; G.flowStarted = 0;
G.flowStartVal = 1;
G._keyled = G._rfid = 0; G._keyled = G._rfid = 0;
G.tcpLastRecvStamp = 0;
} }
void L3_protocol_handler_uart4_fun(U8 *pPara) void L3_protocol_handler_uart4_fun(U8 *pPara)

2
source/app/app_common.h

@ -202,12 +202,12 @@ typedef struct printer_maintenance_global
vU32 modbusstmp; vU32 modbusstmp;
U16 authed; U16 authed;
U16 flowStarted; U16 flowStarted;
U16 flowStartVal;
U8 ccid[21]; //保存ccid卡号空间 20+'\0' U8 ccid[21]; //保存ccid卡号空间 20+'\0'
TS_BoardStatus boardstatus; TS_BoardStatus boardstatus;
U8 _keyled; U8 _keyled;
U8 _rfid; U8 _rfid;
U32 tcpLastRecvStamp;
}PMGlobal; }PMGlobal;

11
source/app/app_task_gm35.c

@ -372,6 +372,17 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
} }
TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS) 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) if(0 == g_at_send_status.conn_ok)
{ {
//L0_uart4_uc(0x1a); //关闭send //L0_uart4_uc(0x1a); //关闭send

69
source/app/app_task_tcp.c

@ -30,7 +30,7 @@ void L3_task_tcp_handle(TS_tcp *s)
TTSS_Task_init(); TTSS_Task_init();
L2_task_go(D_task_tcp_constructor_modbus_pkg); L2_task_go(D_task_tcp_constructor_modbus_pkg);
TTSS_Task_step(D_task_tcp_constructor_modbus_pkg) TTSS_Task_step(D_task_tcp_constructor_modbus_pkg) //构造包
if(G.ccmd_slaver_info[s->slaverIndex].mask > 0) if(G.ccmd_slaver_info[s->slaverIndex].mask > 0)
{ {
s->pkglen = L3_pack_ccmodbus(&s->loopPkg,G.ccmd_slaver_info + s->slaverIndex); s->pkglen = L3_pack_ccmodbus(&s->loopPkg,G.ccmd_slaver_info + s->slaverIndex);
@ -43,53 +43,60 @@ void L3_task_tcp_handle(TS_tcp *s)
L2_task_go(D_task_tcp_switch_next_slaver); L2_task_go(D_task_tcp_switch_next_slaver);
} }
TTSS_Task_step(D_task_tcp_send_modbus_pkg) 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); L3_gm35_send((U8*)&s->loopPkg,s->pkglen);
s->sendStamp = s_nos_tick.t_5ms; s->sendStamp = s_nos_tick.t_1s;
if(G.ccmd_slaver_info[s->slaverIndex].mask == 1) if(G.ccmd_slaver_info[s->slaverIndex].mask == 1)
{ {
G.ccmd_slaver_info[s->slaverIndex].mask = 0; G.ccmd_slaver_info[s->slaverIndex].mask = 0;
} }
L2_task_go(D_task_tcp_wait_modbus_ack); L2_task_go(D_task_tcp_wait_modbus_ack);
TTSS_Task_step(D_task_tcp_wait_modbus_ack) TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
if(s_nos_tick.t_5ms - s->sendStamp >= 300) if(s_uart4_tcp_rec.ok)
{ {
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_uart4_tcp_rec.ok = 0; s->ackFlag = 1;
s->pAckPkg = (TS_PH3_ccmodbus*)(s_uart4_tcp_rec.sp); switch(s->slaverIndex)
L0_uart0_sendArray((U8*)s->pAckPkg,s->pAckPkg->num + 3); {
if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver) 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->ackFlag = 1; s->treg = (U16)(s->pAckPkg->buf[0]) << 8 | (U16)(s->pAckPkg->buf[1]);
G.tcpLastRecvStamp = s_nos_tick.t_1s; if(s->treg == G.ccmd_slaver_info[0].reg)
if(s->pAckPkg->oper == MODBUS_OPER_WRITE_M)
{ {
U16 reg = (U16)(s->pAckPkg->buf[0]) << 8 | (U16)(s->pAckPkg->buf[1]); G.authed = 1;
if(reg == G.ccmd_slaver_info[0].reg) }
{ else if(s->treg == G.ccmd_slaver_info[2].reg)
G.authed = 1; {
} G.flowStarted = 1;
else if(reg == G.md_slaver_info[2].reg)
{
G.flowStarted = 1;
}
} }
} }
#endif
} }
if(s->ackFlag || ++s->retryTimes >= MODBUS_SLAVER_RETRY_MAX_TIME) }
{ if(s->ackFlag == 1 || s_nos_tick.t_1s - s->sendStamp >= 5) //收到ack或者超时
L2_task_go(D_task_tcp_switch_next_slaver); {
} L2_task_go(D_task_tcp_switch_next_slaver);
else
{
L2_task_go(D_task_tcp_send_modbus_pkg);
}
} }
TTSS_Task_step(D_task_tcp_switch_next_slaver) TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个
if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX) if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX)
{ {
s->slaverIndex = 0; s->slaverIndex = 0;

1
source/app/app_task_tcp.h

@ -15,6 +15,7 @@ typedef struct
U32 sendStamp; U32 sendStamp;
U8 retryTimes; U8 retryTimes;
U8 ackFlag; U8 ackFlag;
U16 treg;
}TS_tcp; }TS_tcp;
#define U485_TIMEOUT 3 //3 x 100ms = 300ms #define U485_TIMEOUT 3 //3 x 100ms = 300ms

21
source/app/app_task_tcp_control.c

@ -17,9 +17,10 @@ void L3_task_tcp_control_init(void)
#define D_task_tcp_control_01 0x51 #define D_task_tcp_control_01 0x51
#define D_task_tcp_control_02 0x52 #define D_task_tcp_control_02 0x52
void L3_task_tcp_control_handle(TS_tcp_control *s) void L3_task_tcp_control_handle(TS_tcp_control *s)
{ {
TTSS_Task_init(); TTSS_Task_init();
L2_task_go(D_task_tcp_control_01); L2_task_go(D_task_tcp_control_01);
TTSS_Task_step(D_task_tcp_control_01) TTSS_Task_step(D_task_tcp_control_01)
@ -28,8 +29,10 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
G.authed = 0; G.authed = 0;
s->conn_ok_pool = g_at_send_status.conn_ok; s->conn_ok_pool = g_at_send_status.conn_ok;
} }
L2_task_go(D_task_tcp_control_02);
if(s->conn_ok_pool) TTSS_Task_step(D_task_tcp_control_02)
if(g_at_send_status.conn_ok)
{ {
//3s一次发送数据包 //3s一次发送数据包
if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 2) if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 2)
@ -48,21 +51,11 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
{ {
G.ccmd_slaver_info[3].mask = 1; G.ccmd_slaver_info[3].mask = 1;
} }
} ts_tcp_control.tcp_send_stmp = s_nos_tick.t_1s;
ts_tcp_control.tcp_send_stmp = s_nos_tick.t_1s;
}
L2_task_go(D_task_tcp_control_02);
TTSS_Task_step(D_task_tcp_control_02)
if(g_at_send_status.conn_ok)
{
if(s_nos_tick.t_1s - G.tcpLastRecvStamp >= 20)
{
g_at_send_status.conn_ok = 0;
} }
} }
L2_task_go(D_task_tcp_control_01); L2_task_go(D_task_tcp_control_01);
TTSS_Task_end(); TTSS_Task_end();
} }

Loading…
Cancel
Save