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. 27
      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].regnum = 0x01;
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[3].slaver = SLAVER_TCP_SERVER_ID; //�务�
@ -107,9 +107,9 @@ void Lu_register_init()
G.modbusstmp = 0;
G.authed = 0;
G.flowStarted = 0;
G.flowStartVal = 1;
G._keyled = G._rfid = 0;
G.tcpLastRecvStamp = 0;
}
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;
U16 authed;
U16 flowStarted;
U16 flowStartVal;
U8 ccid[21]; //保存ccid卡号空间 20+'\0'
TS_BoardStatus boardstatus;
U8 _keyled;
U8 _rfid;
U32 tcpLastRecvStamp;
}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)
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

69
source/app/app_task_tcp.c

@ -30,7 +30,7 @@ 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)
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);
@ -43,53 +43,60 @@ void L3_task_tcp_handle(TS_tcp *s)
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);
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)
{
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)
if(s_nos_tick.t_5ms - s->sendStamp >= 300)
TTSS_Task_step(D_task_tcp_wait_modbus_ack) //等待ack
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->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->ackFlag = 1;
G.tcpLastRecvStamp = s_nos_tick.t_1s;
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)
{
U16 reg = (U16)(s->pAckPkg->buf[0]) << 8 | (U16)(s->pAckPkg->buf[1]);
if(reg == G.ccmd_slaver_info[0].reg)
{
G.authed = 1;
}
else if(reg == G.md_slaver_info[2].reg)
{
G.flowStarted = 1;
}
G.authed = 1;
}
else if(s->treg == G.ccmd_slaver_info[2].reg)
{
G.flowStarted = 1;
}
}
#endif
}
if(s->ackFlag || ++s->retryTimes >= MODBUS_SLAVER_RETRY_MAX_TIME)
{
L2_task_go(D_task_tcp_switch_next_slaver);
}
else
{
L2_task_go(D_task_tcp_send_modbus_pkg);
}
}
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)
TTSS_Task_step(D_task_tcp_switch_next_slaver) //切换下一个
if(++ s->slaverIndex >= CCMD_SLAVER_INFO_MAX)
{
s->slaverIndex = 0;

1
source/app/app_task_tcp.h

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

27
source/app/app_task_tcp_control.c

@ -17,23 +17,26 @@ void L3_task_tcp_control_init(void)
#define D_task_tcp_control_01 0x51
#define D_task_tcp_control_02 0x52
void L3_task_tcp_control_handle(TS_tcp_control *s)
{
TTSS_Task_init();
TTSS_Task_init();
L2_task_go(D_task_tcp_control_01);
TTSS_Task_step(D_task_tcp_control_01)
if(s->conn_ok_pool != g_at_send_status.conn_ok)
{
G.authed = 0;
s->conn_ok_pool = g_at_send_status.conn_ok;
}
if(s->conn_ok_pool)
L2_task_go(D_task_tcp_control_02);
TTSS_Task_step(D_task_tcp_control_02)
if(g_at_send_status.conn_ok)
{
//3s一次发送数据包
if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 2)
{
{
if(!G.authed)
{
//发送认证包
@ -48,21 +51,11 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
{
G.ccmd_slaver_info[3].mask = 1;
}
}
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;
ts_tcp_control.tcp_send_stmp = s_nos_tick.t_1s;
}
}
L2_task_go(D_task_tcp_control_01);
TTSS_Task_end();
}

Loading…
Cancel
Save