Compare commits

...

5 Commits

  1. 5
      keilp/cc_as_stc02_gsm_main.uvproj
  2. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym
  3. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xab
  4. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xad
  5. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm
  6. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xsb
  7. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xsd
  8. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siproj
  9. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siwork
  10. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_sym
  11. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xab
  12. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xad
  13. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xc
  14. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xf
  15. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xm
  16. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xr
  17. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xsb
  18. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.sip_xsd
  19. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.siproj
  20. 0
      si4/soft_gsm_main.si4project/soft_ps5ws.siproj_settings.xml
  21. BIN
      si4/soft_gsm_main.si4project/soft_ps5ws.siwork
  22. 44
      source/app/app_common.c
  23. 7
      source/app/app_common.h
  24. 83
      source/app/app_drv.c
  25. 4
      source/app/app_drv.h
  26. 22
      source/app/app_task_485.c
  27. 5
      source/app/app_task_gm35.h
  28. 8
      source/app/app_task_rfid.c
  29. 33
      source/app/app_task_tcp.c
  30. 15
      source/app/app_task_tcp_control.c
  31. 51
      source/app/main.c
  32. 54
      source/bsp/bsp_config.c
  33. 2
      source/msp/UART2.h
  34. 22
      source/tpc/tpc_ccmodbus.c
  35. 4
      source/tpc/tpc_ccmodbus.h
  36. 4
      source/tpc/tpc_modbus.h

5
keilp/cc_as_stc02_gsm_main.uvproj

@ -411,11 +411,6 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\source\app\app_task_tcp_control.c</FilePath> <FilePath>..\source\app\app_task_tcp_control.c</FilePath>
</File> </File>
<File>
<FileName>app_task_gm35.c</FileName>
<FileType>1</FileType>
<FilePath>..\source\app\app_task_gm35.c</FilePath>
</File>
<File> <File>
<FileName>app_task_wdt.c</FileName> <FileName>app_task_wdt.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xab

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xad

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xsb

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xsd

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.siproj

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.siwork

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_sym

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_xab

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_xad

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc → si4/soft_gsm_main.si4project/soft_ps5ws.sip_xc

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf → si4/soft_gsm_main.si4project/soft_ps5ws.sip_xf

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_xm

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr → si4/soft_gsm_main.si4project/soft_ps5ws.sip_xr

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_xsb

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.sip_xsd

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.siproj

Binary file not shown.

0
si4/soft_gsm_main.si4project/soft_gsm_main.siproj_settings.xml → si4/soft_gsm_main.si4project/soft_ps5ws.siproj_settings.xml

BIN
si4/soft_gsm_main.si4project/soft_ps5ws.siwork

Binary file not shown.

44
source/app/app_common.c

@ -9,25 +9,27 @@
struct printer_maintenance_global G; struct printer_maintenance_global G;
U8 ccmodbus_len = 0; U8 ccmodbus_len = 0;
#define KEY_RFID_MAP_SIZE 26 #define KEY_RFID_MAP_SIZE 30
U32 code key_rfid_map[KEY_RFID_MAP_SIZE] = U32 code key_rfid_map[KEY_RFID_MAP_SIZE] =
{ {
/// key, rfid /// key, rfid
//0x01,1, ///S1 ///key_map[0] key_map[1] //0x01,1, ///S1 ///key_map[0] key_map[1]
//0x02,11, ///S2 ///key_map[n] key_map[n+1] //0x02,11, ///S2 ///key_map[n] key_map[n+1]
0x03,0x01000001, ///呼叫 0x03,0x02000020, ///呼叫 S2
0x04,0x02000001, ///分诊 0x04,0x02000001, ///分诊 S12
0x08,0x01000003, ///一线 0x08,0x03010301, ///一线 S3 医生1
0x09,0x01000004, ///采血 0x08,0x03010302, ///一线 S3 医生2
0x0a,0x01000005, ///心电 0x09,0x02000059, ///采血 S13
0x0B,0x02000003, ///CT 0x0A,0x02000025, ///心电 S4
0x0f,0x01000007, ///二线 0x0B,0x02000003, ///CT S14
0x10,0x01000008, ///谈话 0x0F,0x03020301, ///二线 S5 医生1
0x11,0x01000009, ///签字 0x0F,0x03020302, ///二线 S5 医生2
0x12,0x0100000A, ///团注 0x10,0x01000008, ///谈话 S15
0x16,0x02000005, ///介入 0x11,0x01000009, ///签字 S6
0x17,0x0100000C, ///置鞘(穿刺) 0x12,0x02000060, ///团注 S16
0x18,0x0100000D, ///病房 0x16,0x02000005, ///介入 S7
0x17,0x0100000C, ///置鞘(穿刺) S17
0x18,0x02000023, ///病房 S8
//0x1d,9, ///S16 //0x1d,9, ///S16
//0x1f,10, ///S17 //0x1f,10, ///S17
//0x1e,0 /// 清零按键,无需亮灯 //0x1e,0 /// 清零按键,无需亮灯
@ -64,7 +66,7 @@ void L2_register_init()
{ {
U8 i = 0; U8 i = 0;
G.p.slaverId = 0x10; G.p.slaverId = 0x10;
G.p.wisdom_car_no = 0x92; //第一台车91,第二台车92 G.p.wisdom_car_no = 0x93; //第一台车91,第二台车92
G.p.thrombolytic_ratio = 9; //0.9 G.p.thrombolytic_ratio = 9; //0.9
G.p.bolus_ratio = 1; //0.9 G.p.bolus_ratio = 1; //0.9
G.p.hold_ratio = 9; //0.1 G.p.hold_ratio = 9; //0.1
@ -72,13 +74,17 @@ void L2_register_init()
G.total_weight = 0; G.total_weight = 0;
G.pi_weight = 0; G.pi_weight = 0;
G.jing_weight = 0; G.jing_weight = 0;
G.ch_weight[0] = 0;
G.ch_weight[1] = 0;
G.ch_weight[2] = 0;
G.ch_weight[3] = 0;
G.thrombolytic_val = G.bolus_val = G.hold_val = 0; G.thrombolytic_val = G.bolus_val = G.hold_val = 0;
G.asga.xaxis = G.asga.yaxis = G.asga.zaxis = 0; G.asga.xaxis = G.asga.yaxis = G.asga.zaxis = 0;
G.rfidval = G.rfidHospitalNo = 0; G.rfidval = G.rfidHospitalNo = 0;
for(i=0;i<4;i++) for(i=0;i<6;i++)
{ {
G.weight[i] = 0; G.rfid[i] = 0;
} }
for(i=0;i<MD_SLAVER_INFO_MAX;i++) for(i=0;i<MD_SLAVER_INFO_MAX;i++)
@ -88,7 +94,7 @@ void L2_register_init()
G.md_slaver_info[0].slaver = SLAVER_DW20_ID; G.md_slaver_info[0].slaver = SLAVER_DW20_ID;
G.md_slaver_info[0].oper = MODBUS_OPER_READ; G.md_slaver_info[0].oper = MODBUS_OPER_READ;
G.md_slaver_info[0].reg = 0x02; G.md_slaver_info[0].reg = 0x02;
G.md_slaver_info[0].regnum = 0x02; G.md_slaver_info[0].regnum = 0x12;
G.md_slaver_info[0].mask = 2; //0->无效 1:暂时有效 2->永久有效 G.md_slaver_info[0].mask = 2; //0->无效 1:暂时有效 2->永久有效
G.md_slaver_info[1].slaver = SLAVER_ASGA03_ID; //倾角XYZ G.md_slaver_info[1].slaver = SLAVER_ASGA03_ID; //倾角XYZ
@ -188,6 +194,7 @@ void L3_protocol_handler_uart0_fun(TS_PH3_ccmodbus *ccmodbus)
} }
} }
#if 0
void L3_protocol_handler_uart4_fun(U8 *pPara) void L3_protocol_handler_uart4_fun(U8 *pPara)
{ {
#if 0 #if 0
@ -294,6 +301,7 @@ void L3_protocol_handler_uart4_fun(U8 *pPara)
} }
#endif #endif
} }
#endif
void L2_do_board_reset(void) void L2_do_board_reset(void)
{ {

7
source/app/app_common.h

@ -6,7 +6,7 @@
#include "../tpc/tpc_modbus.h" #include "../tpc/tpc_modbus.h"
#include "../tpc/tpc_ccmodbus.h" #include "../tpc/tpc_ccmodbus.h"
#define D_CAR_HOSPITAL_NO 0x0001 #define D_CAR_HOSPITAL_NO 0x0000
#define APP_VERSION_HEX 0x30 //高4位主版本,低4位次版本 #define APP_VERSION_HEX 0x30 //高4位主版本,低4位次版本
@ -106,6 +106,7 @@ typedef struct printer_paper_calib
#define MD_SLAVER_INFO_MAX 6 #define MD_SLAVER_INFO_MAX 6
#define CCMD_SLAVER_INFO_MAX 4 #define CCMD_SLAVER_INFO_MAX 4
#define D_ch_max_num 4
//需要持久化的参数,不能超过72字节,否则会导致eeprom溢出 //需要持久化的参数,不能超过72字节,否则会导致eeprom溢出
typedef struct global_param_changable typedef struct global_param_changable
@ -135,7 +136,8 @@ typedef struct printer_maintenance_global
U16 hold_val; U16 hold_val;
CCAsGaInfo asga; CCAsGaInfo asga;
U8 rfid[6]; U8 rfid[6];
S32 weight[4]; S32 ch_weight[D_ch_max_num];
//S32 weight[4];
//U16 reserved2[16 - 9]; //U16 reserved2[16 - 9];
MD_SLAVER_INFO md_slaver_info[MD_SLAVER_INFO_MAX]; MD_SLAVER_INFO md_slaver_info[MD_SLAVER_INFO_MAX];
@ -154,6 +156,7 @@ typedef struct printer_maintenance_global
S32 pi_weight; S32 pi_weight;
S32 total_weight; S32 total_weight;
CCAsGaInfo asga_02; CCAsGaInfo asga_02;
U8 reset; U8 reset;
U8 debug; U8 debug;

83
source/app/app_drv.c

@ -29,9 +29,6 @@ TS_drv_ ts_drv[TS_DRV_MAX]=
0x99,NULL, //a9 gprs 0x99,NULL, //a9 gprs
0x00,NULL, 0x00,NULL,
}; };
#endif
#if 0
void L3_task_a9_rcv_handle(TS_Handle_PH3 *p) void L3_task_a9_rcv_handle(TS_Handle_PH3 *p)
{ {
@ -45,7 +42,7 @@ void L3_task_a9_rcv_handle(TS_Handle_PH3 *p)
L3_protocol_handler_uart0_fun(&ccmodbus,1); L3_protocol_handler_uart0_fun(&ccmodbus,1);
} }
} }
#endif
U8 array[D_s_SSTR_0D0A_len+1]; U8 array[D_s_SSTR_0D0A_len+1];
@ -82,39 +79,83 @@ int L3_checkCrc16(TS_PH3_ccmodbus *ccmodbus)
return 0; return 0;
} }
//FF FE 05 00 00 28 FC CC 从FF开始校验
int L3_checkCrc16_4g(TS_PH3_ccmodbus *ccmodbus)
{
U8 crc[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) void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p)
{ {
if (1 == p->ok) 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)
{ {
switch(p->ts_ccmodbus.slaver) if (1 == p->ok ) //收到消息
{ {
#if 0 L0_uart0_uc('1');
case SLAVER_RFID: if(p->ts_ccmodbus.slaver == G.p.wisdom_car_no )
L0_uart0_uc('r'); {//平车作为slaver,服务器作为master发送的ccmodbus消息
L0_uart0_uchex(p->ts_ccmodbus.buf[0]); U16 reg = (U16)p->ts_ccmodbus.buf[0] << 8 | p->ts_ccmodbus.buf[1];
if(p->ts_ccmodbus.buf[0] != G._rfid) //rfid发生改变 if(p->ts_ccmodbus.oper == MODBUS_OPER_WRITE_M)
{ {
G.rfid = G._rfid = p->ts_ccmodbus.buf[0]; if(reg == 0x0012) //RFID的寄存器,先写死,后面再改
{
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();
} }
break;
#endif
case SLAVER_COM0:
L3_protocol_handler_uart0_fun(&p->ts_ccmodbus);
break;
} }
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 if(p->ts_ccmodbus.oper == 0x91)
{//0x90
G.flowStarted = 1;
}
#if 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;
}
}
#endif
} }
p->ok = 0; p->ok = 0;
} }
} }
void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p) void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p)
{ {
if (1 == p->ok) if (1 == p->ok)
{
if(L3_checkCrc16(&p->ts_ccmodbus))
{ {
L0_uart0_uc('r'); L0_uart0_uc('r');
L0_uart0_uchex(p->ts_ccmodbus.buf[5]); L0_uart0_uchex(p->ts_ccmodbus.buf[5]);
@ -128,7 +169,7 @@ void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p)
G.rfid[5] = p->ts_ccmodbus.buf[5]; 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.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; G.rfidHospitalNo = (U32)G.rfid[0] << 8 | (U32)G.rfid[1]<<0;
}
p->ok = 0; p->ok = 0;
} }
} }

4
source/app/app_drv.h

@ -29,8 +29,8 @@ extern TS_drv_ ts_drv[TS_DRV_MAX];
//extern void L3_UARTcom2_exp_protocol(TS_Handle_PH1A *p); //extern void L3_UARTcom2_exp_protocol(TS_Handle_PH1A *p);
extern void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p); extern void L3_UARTcom0_exp_protocol(TS_Handle_PH3 *p);
extern void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p); extern void L3_UARTcom3_exp_protocol(TS_Handle_PH3 *p);
extern void L3_UARTcom4_exp_protocol(TS_Handle_0d0a *p); extern void L3_UARTcom4_exp_protocol(TS_Handle_PH3 *p);
extern void L3_task_a9_rcv_handle(TS_Handle_PH3 *p); //extern void L3_task_a9_rcv_handle(TS_Handle_PH3 *p);
#endif // #ifndef _bsp_drv_H #endif // #ifndef _bsp_drv_H

22
source/app/app_task_485.c

@ -71,6 +71,26 @@ void L3_task_485_handle(TS_485 *s)
| (S32)(s->pAckPkg->buf[2]) << 16 | (S32)(s->pAckPkg->buf[2]) << 16
| (S32)(s->pAckPkg->buf[3]) << 8 | (S32)(s->pAckPkg->buf[3]) << 8
| (S32)(s->pAckPkg->buf[4]); | (S32)(s->pAckPkg->buf[4]);
G.ch_weight[0] =
(S32)(s->pAckPkg->buf[5]) << 24
| (S32)(s->pAckPkg->buf[6]) << 16
| (S32)(s->pAckPkg->buf[7]) << 8
| (S32)(s->pAckPkg->buf[8]);
G.ch_weight[1] =
(S32)(s->pAckPkg->buf[9]) << 24
| (S32)(s->pAckPkg->buf[10]) << 16
| (S32)(s->pAckPkg->buf[11]) << 8
| (S32)(s->pAckPkg->buf[12]);
G.ch_weight[2] =
(S32)(s->pAckPkg->buf[13]) << 24
| (S32)(s->pAckPkg->buf[14]) << 16
| (S32)(s->pAckPkg->buf[15]) << 8
| (S32)(s->pAckPkg->buf[16]);
G.ch_weight[3] =
(S32)(s->pAckPkg->buf[17]) << 24
| (S32)(s->pAckPkg->buf[18]) << 16
| (S32)(s->pAckPkg->buf[19]) << 8
| (S32)(s->pAckPkg->buf[20]);
G.jing_weight = (G.total_weight <= G.pi_weight) ? (0) :(G.total_weight - G.pi_weight) ; G.jing_weight = (G.total_weight <= G.pi_weight) ? (0) :(G.total_weight - G.pi_weight) ;
break; break;
@ -98,7 +118,7 @@ void L3_task_485_handle(TS_485 *s)
//G.rfid = G._keyled; //G.rfid = G._keyled;
U32 rfid = key_rfid_map_out(G._keyled); U32 rfid = key_rfid_map_out(G._keyled);
G.rfid[0] = D_CAR_HOSPITAL_NO >> 8 & 0xFF; G.rfid[0] = D_CAR_HOSPITAL_NO >> 8 & 0xFF;
G.rfid[0] = D_CAR_HOSPITAL_NO >> 0 & 0xFF;; G.rfid[1] = D_CAR_HOSPITAL_NO >> 0 & 0xFF;;
G.rfid[2] = rfid >> 24 & 0xFF; G.rfid[2] = rfid >> 24 & 0xFF;
G.rfid[3] = rfid >> 16 & 0xFF; G.rfid[3] = rfid >> 16 & 0xFF;
G.rfid[4] = rfid >> 8 & 0xFF; G.rfid[4] = rfid >> 8 & 0xFF;

5
source/app/app_task_gm35.h

@ -24,9 +24,8 @@
#define AT_INS_CCID "AT+CCID\r\n" //SIM卡查询指令 #define AT_INS_CCID "AT+CCID\r\n" //SIM卡查询指令
#define AT_INS_CREG "AT+CREG?\r\n" //网络查询指令 #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_GPRS "AT+CGATT=1;+CGDCONT=1,\"IP\",\"CMNET\";+CGACT=1,1\r\n" //GPRS操作指令
#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n" //#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"www.tall.wiki\",8195\r\n"
//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"weizezhao.imwork.net\",49809\r\n" //连接服务器 #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",38195\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_CIPSEND "AT+CIPSEND\r\n" //发送数据
#define AT_INS_CLOSED "AT+CIPCLOSE\r\n" //主动关闭连接 #define AT_INS_CLOSED "AT+CIPCLOSE\r\n" //主动关闭连接
#define AT_INS_CIPSTATUS "AT+CIPSTATUS\r\n" //查询连接状态 #define AT_INS_CIPSTATUS "AT+CIPSTATUS\r\n" //查询连接状态

8
source/app/app_task_rfid.c

@ -14,8 +14,8 @@ void L3_task_rfid_init(void)
U8 rfid_start_pkg[] = {0xBB,0x00,0x27,0x00,0x03,0x22,0xFF,0xFF,0x4A,0x7E}; U8 rfid_start_pkg[] = {0xBB,0x00,0x27,0x00,0x03,0x22,0xFF,0xFF,0x4A,0x7E};
U8 rfid_stop_pkg[] = {0xBB,0x00,0x28,0x00,0x00,0x28,0x7E}; U8 rfid_stop_pkg[] = {0xBB,0x00,0x28,0x00,0x00,0x28,0x7E};
U8 newrfid_start_pkg[] = {0xA0,0x0D,0x01,0x8A,0x00,0x32,0x01,0x32,0x02,0x32,0x03,0x32,0x00,0xFA,0x00}; //U8 newrfid_start_pkg[] = {0xA0,0x0D,0x01,0x8A,0x00,0x32,0x01,0x32,0x02,0x32,0x03,0x32,0x00,0xFA,0x00};
U8 newrfid_stop_pkg[] = {0xA0,0x04,0x01,0x74,0x00,0xE7}; //U8 newrfid_stop_pkg[] = {0xA0,0x04,0x01,0x74,0x00,0xE7};
void L1_enable_rfid() void L1_enable_rfid()
@ -23,7 +23,7 @@ void L1_enable_rfid()
//L0_uart0_sendArray(rfid_start_pkg,10); //L0_uart0_sendArray(rfid_start_pkg,10);
//L0_uart3_sendArray(rfid_start_pkg,10); //L0_uart3_sendArray(rfid_start_pkg,10);
//L0_uart0_sendArray(newrfid_start_pkg,15); //L0_uart0_sendArray(newrfid_start_pkg,15);
L0_uart3_sendArray(newrfid_start_pkg,15); L0_uart3_sendArray(rfid_start_pkg,15);
} }
void L1_disable_rfid() void L1_disable_rfid()
@ -31,7 +31,7 @@ void L1_disable_rfid()
//L0_uart0_sendArray(rfid_stop_pkg,7); //L0_uart0_sendArray(rfid_stop_pkg,7);
//L0_uart3_sendArray(rfid_stop_pkg,7); //L0_uart3_sendArray(rfid_stop_pkg,7);
//L0_uart0_sendArray(newrfid_stop_pkg,6); //L0_uart0_sendArray(newrfid_stop_pkg,6);
L0_uart3_sendArray(newrfid_stop_pkg,6); L0_uart3_sendArray(rfid_stop_pkg,6);
} }
#define D_task_rfid_send 0x51 #define D_task_rfid_send 0x51

33
source/app/app_task_tcp.c

@ -40,46 +40,19 @@ void L3_task_tcp_handle(TS_tcp *s)
} }
else else
{ {
P55 = 0;
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) //发送包
L3_gm35_send_data((U8*)&s->loopPkg,s->pkglen); L0_uart4_sendArray((U8*)&s->loopPkg, s->pkglen);
L0_uart0_sendArray((U8*)&s->loopPkg, s->pkglen);
s->sendStamp = s_nos_tick.t_1s; 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);
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);
L3_gm35_rcv_data((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(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);
}
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)

15
source/app/app_task_tcp_control.c

@ -24,25 +24,20 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
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)
if(s->conn_ok_pool != g_at_send_status.conn_ok) //TODO 连接状态改变,重新认证
{ //G.authed = 0;
G.authed = 0;
s->conn_ok_pool = g_at_send_status.conn_ok;
}
L2_task_go(D_task_tcp_control_02); L2_task_go(D_task_tcp_control_02);
TTSS_Task_step(D_task_tcp_control_02) 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 >= 3) if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 3)
{ {
if(!G.authed) if(/*!G.authed*/0)
{ {
//发送认证包 //发送认证包
G.ccmd_slaver_info[0].mask = 1; G.ccmd_slaver_info[0].mask = 1;
} }
else if(!G.flowStarted) else if(/*!G.flowStarted*/0)
{ {
//发送流程开始包 //发送流程开始包
G.ccmd_slaver_info[2].mask = 1; G.ccmd_slaver_info[2].mask = 1;
@ -53,9 +48,7 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
} }
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_01); L2_task_go(D_task_tcp_control_01);
TTSS_Task_end(); TTSS_Task_end();
} }

51
source/app/main.c

@ -76,26 +76,10 @@ void L0_main_init(void)
///step: 7>>>>>>>>>寄存器默认初始化>>>>>>>>>>>>> ///step: 7>>>>>>>>>寄存器默认初始化>>>>>>>>>>>>>
L2_register_init(); L2_register_init();
//L3_flash_write_page0(); //L3_flash_write_page0();
#if 0
///step: 5>>>>>>>>>看门狗>>>>>>>>>>>>>
//L0_wdt_init();
L2_gm35_init();
///step: 6>>>>>>>>>Flash>>>>>>>>>>>>>
L3_flash_init();
L3_flash_read_param();
///step : 7>>>>>>>>>任务相关>>>>>>>>>
L3_task_report_init(); //与上位机通信
L3_task_relay_init(); //继电器
L3_task_gm35_core_init();
L3_task_wdt_init(); //看门狗任务初始化
#endif
L3_task_wdt_init(); L3_task_wdt_init();
L2_gm35_init(); //L2_gm35_init();
L3_task_gm35_core_init(); //L3_task_gm35_core_init();
L3_task_485_init(); //485轮询任务初始化 L3_task_485_init(); //485轮询任务初始化
L3_task_485_control_init(); L3_task_485_control_init();
L3_task_tcp_init(); //485轮询任务初始化 L3_task_tcp_init(); //485轮询任务初始化
@ -125,25 +109,19 @@ void main(void)
//----------------------------------------------- //-----------------------------------------------
//系统主循环 //系统主循环
//----------------------------------------------- //-----------------------------------------------
P55 = 1;
while(9) while(9)
{ {
if(1 == s_nos_tick.t1s_heatbeart) if(1 == s_nos_tick.t1s_heatbeart)
{ {
s_nos_tick.t1s_heatbeart = 0; s_nos_tick.t1s_heatbeart = 0;
//L0_uart0_uc('.');
//L0_uart0_sendArray("abcdefg", 7);
if(s_nos_tick.t_1s == 4){ if(s_nos_tick.t_1s == 4){
G.pi_weight = G.total_weight; G.pi_weight = G.total_weight;
L0_uart0_uc('#'); L0_uart0_uc('#');
} }
//if(s_nos_tick.t_1s >= 10) //P55 ^=1;
//{
//G.jing_weight = (s_nos_tick.t_1s - 10)% 100* 10;
//G.rfid = s_nos_tick.t_1s - 10 % 13 + 1;
//}
} }
#if 1
//看门狗 //看门狗
L3_task_wdt_handle(&s_task_wdt); L3_task_wdt_handle(&s_task_wdt);
@ -152,24 +130,19 @@ void main(void)
//master->slaver发送逻辑控制 //master->slaver发送逻辑控制
L3_task_485_control_handle(&ts_485_control); L3_task_485_control_handle(&ts_485_control);
#if 1
//串口0,3 RFID接收
L3_task_rfid_handle(&ts_rfid);
L3_UARTcom0_exp_protocol(&s_uart0_rec);
L3_UARTcom3_exp_protocol(&s_uart3_rec);
//gm35维持连接
L3_task_gm35_core_handle();
//解析串口4协议(gsm模块收到的at响应消息+服务器发送消息)
L3_UARTcom4_exp_protocol(&s_uart4_at_rec);
//tcp发送 //tcp发送
L3_task_tcp_handle(&ts_tcp); L3_task_tcp_handle(&ts_tcp);
//tcp master->slaver发送逻辑控制 //tcp master->slaver发送逻辑控制
L3_task_tcp_control_handle(&ts_tcp_control); L3_task_tcp_control_handle(&ts_tcp_control);
//串口0,3 RFID接收
L3_task_rfid_handle(&ts_rfid);
L3_UARTcom3_exp_protocol(&s_uart3_rec);
//服务端(4G)协议处理
L3_UARTcom4_exp_protocol(&s_uart4_tcp_rec);
#endif #endif
} }
}//end main }//end main

54
source/bsp/bsp_config.c

@ -196,7 +196,6 @@ 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_PH4 s_uart2_rec;
TS_Handle_PH3 s_uart3_rec; TS_Handle_PH3 s_uart3_rec;
TS_Handle_0d0a s_uart4_at_rec;
TS_Handle_PH3 s_uart4_tcp_rec; TS_Handle_PH3 s_uart4_tcp_rec;
void (*Lp0_uart0_fun)(unsigned char sbufreg); void (*Lp0_uart0_fun)(unsigned char sbufreg);
@ -204,54 +203,43 @@ void (*Lp0_uart2_fun)(unsigned char sbufreg);
void (*Lp0_uart3_fun)(unsigned char sbufreg); void (*Lp0_uart3_fun)(unsigned char sbufreg);
void (*Lp0_uart4_fun)(unsigned char sbufreg); void (*Lp0_uart4_fun)(unsigned char sbufreg);
//uart2
void L1_s2b_PH4_2(unsigned char sbufreg)
{
s_uart2_rec.reg = sbufreg;
L1_s2b_PH4(&s_uart2_rec);
}
//uart0 //uart0
void L1_s2b_PH3_0(unsigned char sbufreg) void L1_uart0_exec(unsigned char sbufreg)
{ {
s_uart0_rec.reg = sbufreg; s_uart0_rec.reg = sbufreg;
L1_s2b_PH3(&s_uart0_rec); L1_s2b_PH3(&s_uart0_rec);
} }
//uart2
void L1_uart2_exec(unsigned char sbufreg)
{
s_uart2_rec.reg = sbufreg;
L1_s2b_PH4(&s_uart2_rec);
}
//uart3 //uart3
void L1_s2b_PH3_3(unsigned char sbufreg) void L1_uart3_exec(unsigned char sbufreg)
{ {
s_uart3_rec.reg = sbufreg; s_uart3_rec.reg = sbufreg;
L1_s2b_PH3(&s_uart3_rec); L1_s2b_PH3(&s_uart3_rec);
} }
//GM35协议 //uart4
void L1_s2b_gm35(unsigned char sbufreg) void L1_uart4_exec(unsigned char sbufreg)
{ {
s_uart4_tcp_rec.reg = sbufreg; s_uart4_tcp_rec.reg = sbufreg;
L1_s2b_PH3(&s_uart4_tcp_rec); L1_s2b_PH3(&s_uart4_tcp_rec);
if(0 == s_uart4_tcp_rec.head)
{
s_uart4_at_rec.reg = sbufreg;
L1_s2b_0d0a(&s_uart4_at_rec);
}
else
{
s_uart4_at_rec.head = 0;
}
} }
void L1_uart_tpc_config(void) void L1_uart_tpc_config(void)
{ {
#if 1
//uart0 protocol setting... //uart0 protocol setting...
s_uart0_rec.head = 0; s_uart0_rec.head = 0;
s_uart0_rec.ok = 0; s_uart0_rec.ok = 0;
s_uart0_rec.head_0 = D_CMD_Filter1_ff; s_uart0_rec.head_0 = D_CMD_Filter1_ff;
s_uart0_rec.head_1 = D_CMD_Filter2_fe; s_uart0_rec.head_1 = D_CMD_Filter2_fe;
s_uart0_rec.sp = (U8*)&(s_uart0_rec.ts_ccmodbus); s_uart0_rec.crcOffset = 0; //从filter0开始计算crc
#endif
//uart2 protocol setting... //uart2 protocol setting...
s_uart2_rec.head = 0; s_uart2_rec.head = 0;
@ -263,24 +251,18 @@ void L1_uart_tpc_config(void)
s_uart3_rec.ok = 0; s_uart3_rec.ok = 0;
s_uart3_rec.head_0 = D_CMD_Filter1_ff; s_uart3_rec.head_0 = D_CMD_Filter1_ff;
s_uart3_rec.head_1 = D_CMD_Filter2_fe; s_uart3_rec.head_1 = D_CMD_Filter2_fe;
s_uart3_rec.sp = (U8*)&(s_uart3_rec.ts_ccmodbus); s_uart3_rec.crcOffset = 0; //从filter0开始计算crc
//uart4 //uart4
s_uart4_at_rec.head = 0;
s_uart4_at_rec.ok = 0;
s_uart4_at_rec.num = 0;
s_uart4_at_rec.setflag = FLAG_NONE;
//a9 +CIPRCV
s_uart4_tcp_rec.head = 0; s_uart4_tcp_rec.head = 0;
s_uart4_tcp_rec.ok = 0; s_uart4_tcp_rec.ok = 0;
s_uart4_tcp_rec.head_0 = D_CMD_Filter1_ff; s_uart4_tcp_rec.head_0 = D_CMD_Filter1_ff;
s_uart4_tcp_rec.head_1 = D_CMD_Filter2_fe; s_uart4_tcp_rec.head_1 = D_CMD_Filter2_fe;
s_uart4_tcp_rec.sp = (U8*)&(s_uart4_tcp_rec.ts_ccmodbus); s_uart4_tcp_rec.crcOffset = 3; //从slaver开始计算crc
Lp0_uart0_fun = L1_s2b_PH3_0; Lp0_uart0_fun = L1_uart0_exec;
Lp0_uart2_fun = L1_s2b_PH4_2; Lp0_uart2_fun = L1_uart2_exec;
Lp0_uart3_fun = L1_s2b_PH3_3; Lp0_uart3_fun = L1_uart3_exec;
Lp0_uart4_fun = L1_s2b_gm35; Lp0_uart4_fun = L1_uart4_exec;
} }

2
source/msp/UART2.h

@ -64,7 +64,7 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面
#define D_s_uart2_rec_open(); s_uart2_rec.ok = 0;// 关闭串口协议解析 #define D_s_uart2_rec_open(); s_uart2_rec.ok = 0;// 关闭串口协议解析
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define D_send2_buf_max 64 /// 9600bps = 10000bps = 1000 Bps = 1Byte/ms #define D_send2_buf_max 128 /// 9600bps = 10000bps = 1000 Bps = 1Byte/ms
/// 19200bps = 20000bps = 2000Bps = 2Byte/ms = 1Byte/0.5ms /// 19200bps = 20000bps = 2000Bps = 2Byte/ms = 1Byte/0.5ms
/// 128Bytes = 128*0.5ms = 64ms /// 128Bytes = 128*0.5ms = 64ms
struct _s_uart2_send_buf_ struct _s_uart2_send_buf_

22
source/tpc/tpc_ccmodbus.c

@ -145,39 +145,37 @@ void L1_s2b_PH3(TS_Handle_PH3 *p)// reentrant
{ {
p->head = 1; p->head = 1;
p->max = D_s_PH3_ccmodbus_max - 1; p->max = D_s_PH3_ccmodbus_max - 1;
p->sp = (unsigned char *)&(p->ts_ccmodbus); p->sp = p->buf;
p->sp[0] = p->head_0; p->sp[0] = p->head_0;
p->sp[1] = p->head_1; p->sp[1] = p->head_1;
p->num = 1; p->num = 1;
//p->ok = 1;
} }
}else }else
{ {
p->num ++; p->num ++;
p->sp[p->num] = p->cashe[0]; p->sp[p->num] = p->cashe[0];
if(p->num == 2)//数量 第3个数据 if(p->num == 2)//第3个数据
{ {
p->max = p->reg + 2;// p->max = p->reg + 2;//
if(p->max >= D_s_PH3_ccmodbus_max) if(p->max >= D_s_PH3_ccmodbus_max)
{ {
p->max = D_s_PH3_ccmodbus_max - 1; p->head = 0;//error len. restart.
p->sp[p->num] = p->max - 2; return;
} }
} }
if(p->num >= p->max) if(p->num >= p->max)
{ {
//crc16(p->crc,&p->ts_ccmodbus.slaver,p->ts_ccmodbus.num - 2); crc16(p->crc,p->sp + p->crcOffset,p->num - 1 - p->crcOffset); //p->num + 1 - 2 - p->crcOffset
//if(p->crc[0] == p->sp[p->num-1] && p->crc[1] == p->sp[p->num]) if(p->crc[0] == p->sp[p->num-1] && p->crc[1] == p->sp[p->num])
if(1)
{ {
//P55 ^= 1;
if (p->ok != 1) if (p->ok != 1)
{ {
//byte_copy_uc((U8*)&p->ts_ccmodbus,(U8*)&p->__ts_ccmodbus,p->max + 1); byte_copy_uc((U8*)&p->ts_ccmodbus,(U8*)p->sp,p->num + 1);
p->ok = 1;//收到 命令结束,必须有个地方清0,否则无法再次接受报文 p->ok = 1;
} }
} }
p->num = 0; //放在if (p->ok != 1) 外 p->num = p->head = 0;
p->head = 0; //放在if (p->ok != 1) 外
} }
} }
} }

4
source/tpc/tpc_ccmodbus.h

@ -66,7 +66,7 @@ msp/uartx.c 底层代码 和cpu相关
/// 协议表达的意思为地址为0x52的从机, 功能码16 数据为11 22 33 44,校验码 F5 9F /// 协议表达的意思为地址为0x52的从机, 功能码16 数据为11 22 33 44,校验码 F5 9F
/// 校验码的范围为 /// 校验码的范围为
#define D_s_PH3_ccmodbus_max 64 #define D_s_PH3_ccmodbus_max 128
#define D_s_PH3_ccmodbus_min 4 #define D_s_PH3_ccmodbus_min 4
typedef struct typedef struct
@ -85,12 +85,14 @@ typedef struct
vU8 cashe[2]; vU8 cashe[2];
vU8 reg; vU8 reg;
vU8 max; //接收到的数目的最大值 vU8 max; //接收到的数目的最大值
vU8 crcOffset;
vU8 head_0; vU8 head_0;
vU8 head_1; vU8 head_1;
vU8 head; //接收标志头标志 vU8 head; //接收标志头标志
vU8 ok; //接收协议ok标志 vU8 ok; //接收协议ok标志
vU8 num; vU8 num;
vU8 *sp; vU8 *sp;
vU8 buf[D_s_PH3_ccmodbus_max];
TS_PH3_ccmodbus ts_ccmodbus; TS_PH3_ccmodbus ts_ccmodbus;
vU8 crc[2]; vU8 crc[2];
}TS_Handle_PH3; }TS_Handle_PH3;

4
source/tpc/tpc_modbus.h

@ -48,8 +48,8 @@ enum MODBUS_ERR_CODE
}; };
//协议类型: MODBUS RTU模式 //协议类型: MODBUS RTU模式
#define D_s_PH4_modbus_max (32) //#define D_s_PH4_modbus_max (32)
//#define D_s_PH4_modbus_max (64) #define D_s_PH4_modbus_max (64)
typedef struct ts_ph4_modbus typedef struct ts_ph4_modbus
{ {

Loading…
Cancel
Save