|
|
@ -29,9 +29,6 @@ TS_drv_ ts_drv[TS_DRV_MAX]= |
|
|
|
0x99,NULL, //a9 gprs
|
|
|
|
0x00,NULL, |
|
|
|
}; |
|
|
|
#endif |
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
|
|
void L3_task_a9_rcv_handle(TS_Handle_PH3 *p) |
|
|
|
{ |
|
|
@ -69,76 +66,89 @@ void L3_UARTcom4_exp_protocol(TS_Handle_0d0a *p) |
|
|
|
#endif |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
void L3_UARTcom4_exp_protocol(TS_Handle_PH3 *p) |
|
|
|
//FF FE 05 00 00 28 FC CC 从FF开始校验
|
|
|
|
int L3_checkCrc16(TS_PH3_ccmodbus *ccmodbus) |
|
|
|
{ |
|
|
|
if (1 == p->ok ) //收到消息
|
|
|
|
{ |
|
|
|
if(L3_checkCrc16(&p->ts_ccmodbus)) //CRC校验
|
|
|
|
{ |
|
|
|
if(p->ts_ccmodbus.slaver == G.p.wisdom_car_no ) //平车ID
|
|
|
|
U8 crc[2]; |
|
|
|
crc16(crc,&ccmodbus->filter1,ccmodbus->num + 3 - 2); |
|
|
|
if(crc[0] == ccmodbus->buf[ccmodbus->num-2-2] && crc[1] == ccmodbus->buf[ccmodbus->num-2-1]) |
|
|
|
{ |
|
|
|
switch(p->ts_ccmodbus.oper) //操作码0x10
|
|
|
|
case MODBUS_OPER_WRITE_M: |
|
|
|
|
|
|
|
|
|
|
|
L3_protocol_handler_uart4_fun(&p->ts_ccmodbus); |
|
|
|
} |
|
|
|
} |
|
|
|
g_at_send_status.gprs_last_recv_stmp = s_nos_tick.t_1s; |
|
|
|
L3_protocol_handler_uart4_fun(p->buf+1); |
|
|
|
p->ok = 0; |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//FF FE 05 00 00 28 FC CC 从FF开始校验
|
|
|
|
int L3_checkCrc16(TS_PH3_ccmodbus *ccmodbus) |
|
|
|
int L3_checkCrc16_4g(TS_PH3_ccmodbus *ccmodbus) |
|
|
|
{ |
|
|
|
U8 crc[2]; |
|
|
|
crc16(crc,&ccmodbus->filter1,ccmodbus->num + 3 - 2); |
|
|
|
crc16(crc,&ccmodbus->slaver,ccmodbus->num - 2); |
|
|
|
if(crc[0] == ccmodbus->buf[ccmodbus->num-2-2] && crc[1] == ccmodbus->buf[ccmodbus->num-2-1]) |
|
|
|
{ |
|
|
|
return 1; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p) |
|
|
|
{ |
|
|
|
if (1 == p->ok) |
|
|
|
{ |
|
|
|
if(L3_checkCrc16(&p->ts_ccmodbus)) |
|
|
|
L3_protocol_handler_uart0_fun(&p->ts_ccmodbus); |
|
|
|
p->ok = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void L3_UARTcom4_exp_protocol(TS_Handle_PH3 *p) |
|
|
|
{ |
|
|
|
if (1 == p->ok ) //收到消息
|
|
|
|
{ |
|
|
|
switch(p->ts_ccmodbus.slaver) |
|
|
|
if(p->ts_ccmodbus.slaver == G.p.wisdom_car_no ) |
|
|
|
{//平车作为slaver,服务器作为master发送的ccmodbus消息
|
|
|
|
U16 reg = (U16)p->ts_ccmodbus.buf[0] << 8 | p->ts_ccmodbus.buf[1]; |
|
|
|
if(p->ts_ccmodbus.oper == MODBUS_OPER_WRITE_M) |
|
|
|
{ |
|
|
|
#if 0 |
|
|
|
case SLAVER_RFID: |
|
|
|
L0_uart0_uc('r'); |
|
|
|
L0_uart0_uchex(p->ts_ccmodbus.buf[0]); |
|
|
|
if(p->ts_ccmodbus.buf[0] != G._rfid) //rfid发生改变
|
|
|
|
if(reg == 0x0012) //RFID的寄存器,先写死,后面再改
|
|
|
|
{ |
|
|
|
G.rfid = G._rfid = p->ts_ccmodbus.buf[0]; |
|
|
|
G.rfid[0] = p->ts_ccmodbus.buf[5]; |
|
|
|
G.rfid[1] = p->ts_ccmodbus.buf[6]; |
|
|
|
G.rfid[2] = p->ts_ccmodbus.buf[7]; |
|
|
|
G.rfid[3] = p->ts_ccmodbus.buf[8]; |
|
|
|
G.rfid[4] = p->ts_ccmodbus.buf[9]; |
|
|
|
G.rfid[5] = p->ts_ccmodbus.buf[10]; |
|
|
|
G.rfidval = (U32)G.rfid[2] << 24 | (U32)G.rfid[3]<<16 | (U32)G.rfid[4]<<8 | (U32)G.rfid[5]; |
|
|
|
G.rfidHospitalNo = (U16)G.rfid[0] << 8 | (U32)G.rfid[1]<<0; |
|
|
|
} |
|
|
|
//TODO 先不回复,之后再改
|
|
|
|
//L0_uart4_sendArray();
|
|
|
|
} |
|
|
|
} |
|
|
|
else if(p->ts_ccmodbus.slaver == SLAVER_TCP_SERVER_ID) |
|
|
|
{//平车作为master,服务器作为slaver回复的ack消息
|
|
|
|
if(p->ts_ccmodbus.oper == MODBUS_OPER_AUTH) |
|
|
|
{//0x90
|
|
|
|
G.authed = 1; |
|
|
|
} |
|
|
|
else |
|
|
|
{//0x03,0x06,0x10
|
|
|
|
U16 reg = (U16)p->ts_ccmodbus.buf[0] << 8 | p->ts_ccmodbus.buf[1]; |
|
|
|
if(reg == 0x0003) |
|
|
|
{//流程开始包
|
|
|
|
G.flowStarted = 1; |
|
|
|
} |
|
|
|
break; |
|
|
|
#endif |
|
|
|
case SLAVER_COM0: |
|
|
|
L3_protocol_handler_uart0_fun(&p->ts_ccmodbus); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
p->ok = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) |
|
|
|
{ |
|
|
|
if (1 == p->ok) |
|
|
|
{ |
|
|
|
if(L3_checkCrc16(&p->ts_ccmodbus)) |
|
|
|
{ |
|
|
|
L0_uart0_uc('r'); |
|
|
|
L0_uart0_uchex(p->ts_ccmodbus.buf[5]); |
|
|
@ -152,7 +162,7 @@ void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) |
|
|
|
G.rfid[5] = p->ts_ccmodbus.buf[5]; |
|
|
|
G.rfidval = (U32)G.rfid[2] << 24 | (U32)G.rfid[3]<<16 | (U32)G.rfid[4]<<8 | (U32)G.rfid[5]; |
|
|
|
G.rfidHospitalNo = (U32)G.rfid[0] << 8 | (U32)G.rfid[1]<<0; |
|
|
|
} |
|
|
|
|
|
|
|
p->ok = 0; |
|
|
|
} |
|
|
|
} |
|
|
|