Browse Source

tcp test ok

master
zhangsan 5 years ago
parent
commit
6ba99fd91c
  1. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym
  2. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm
  3. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siwork
  4. 361
      source/app/app_common.c
  5. 26
      source/app/app_common.h
  6. 2
      source/app/app_drv.c
  7. 28
      source/app/app_task_485.c
  8. 10
      source/app/app_task_gm35.c
  9. 3
      source/app/app_task_gm35.h
  10. 13
      source/app/app_task_tcp.c
  11. 5
      source/app/app_task_tcp_control.c
  12. 28
      source/app/main.c
  13. 12
      source/ctask/tick.h
  14. 1
      source/msp/time.h
  15. 2
      source/tpc/tpc_ccmodbus.h

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_xm

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.siwork

Binary file not shown.

361
source/app/app_common.c

@ -6,30 +6,29 @@
#include "../app/app_paraid.h" #include "../app/app_paraid.h"
#include "../app/app_task_relay.h" #include "../app/app_task_relay.h"
//0xFF+0xFE+2+20+1+21 `0xFF``0xFE`00``2A``simno,salt
#define LEN_GPRS_TCP_PKG_AT_SIGNIN 46
#define LEN_GPRS_TCP_DATA_ACK 8
struct printer_maintenance_global G; struct printer_maintenance_global G;
//TS_PH3_ccmodbus_ack ccmodbus_ack;
U8 ccmodbus_len = 0; U8 ccmodbus_len = 0;
vU8 gprsTcpPkg_Signin[LEN_GPRS_TCP_PKG_AT_SIGNIN] = {0xFF,0xFE,0x0,0x2A};
vU8 gprsdataack[LEN_GPRS_TCP_DATA_ACK] = {0xFF,0xFE,0x0,0x4,0x11,0x95,0x8F,0xCD};
void Lu_register_init() void Lu_register_init()
{ {
U8 i = 0; U8 i = 0;
G.p.slaverId = 0x10; G.p.slaverId = 0x10;
G.p.wisdom_car_no = 0x01; G.p.wisdom_car_no = 0x91;
G.p.thrombolytic_ratio = 9; //0.9 G.p.thrombolytic_ratio = 9; //0.9
G.p.bolus_ratio = 9; //0.9 G.p.bolus_ratio = 1; //0.9
G.p.hold_ratio = 1; //0.1 G.p.hold_ratio = 9; //0.1
G.total_weight = 50000; G.total_weight = 0;
G.thrombolytic_val = G.bolus_val = G.hold_val = 40000; G.thrombolytic_val = G.bolus_val = G.hold_val = 0;
G.asga.xaxis = G.asga.yaxis = G.asga.zaxis = 22; G.asga.xaxis = G.asga.yaxis = G.asga.zaxis = 0;
G.rfid = 0; G.rfid = 0;
for(i=0;i<4;i++)
{
G.weight[i] = 0;
}
for(i=0;i<MD_SLAVER_INFO_MAX;i++) for(i=0;i<MD_SLAVER_INFO_MAX;i++)
{ {
G.md_slaver_info[i].mask = 0; G.md_slaver_info[i].mask = 0;
@ -46,7 +45,7 @@ void Lu_register_init()
G.md_slaver_info[1].regnum = 0x03; G.md_slaver_info[1].regnum = 0x03;
G.md_slaver_info[1].mask = 2; G.md_slaver_info[1].mask = 2;
G.md_slaver_info[2].slaver = SLAVER_SHOW01_ID; //é‡�é‡�2ï¼Œæº¶æ “ï¼Œå›¢æ³¨ï¼Œç»´æŒ G.md_slaver_info[2].slaver = SLAVER_SHOW01_ID; //é‡�é‡�2,溶栓,团注,维æŒ?
G.md_slaver_info[2].oper = MODBUS_OPER_WRITE_M; G.md_slaver_info[2].oper = MODBUS_OPER_WRITE_M;
G.md_slaver_info[2].reg = 0x02; G.md_slaver_info[2].reg = 0x02;
G.md_slaver_info[2].regnum = 0x05; G.md_slaver_info[2].regnum = 0x05;
@ -67,35 +66,35 @@ void Lu_register_init()
G.ccmd_slaver_info[i].mask = 0; G.ccmd_slaver_info[i].mask = 0;
} }
G.ccmd_slaver_info[0].slaver = SLAVER_TCP_SERVER_ID; //�务器 //登陆包,写平车编� G.ccmd_slaver_info[0].slaver = SLAVER_TCP_SERVER_ID; //�务� //登陆包,写平车编�
G.ccmd_slaver_info[0].oper = MODBUS_OPER_WRITE_M; G.ccmd_slaver_info[0].oper = MODBUS_OPER_WRITE_M;
G.ccmd_slaver_info[0].reg = 0x01; G.ccmd_slaver_info[0].reg = 0x01;
G.ccmd_slaver_info[0].regnum = 0x01; G.ccmd_slaver_info[0].regnum = 0x01;
G.ccmd_slaver_info[0].bytes = G.ccmd_slaver_info[5].regnum * 2; G.ccmd_slaver_info[0].bytes = G.ccmd_slaver_info[0].regnum * 2;
G.ccmd_slaver_info[0].buf = (U8*)&G.p.wisdom_car_no; G.ccmd_slaver_info[0].buf = (U8*)&G.p.wisdom_car_no;
G.ccmd_slaver_info[0].mask = 0; G.ccmd_slaver_info[0].mask = 0;
G.ccmd_slaver_info[1].slaver = SLAVER_TCP_SERVER_ID; //�务器 //心跳包,写心跳寄存器 G.ccmd_slaver_info[1].slaver = SLAVER_TCP_SERVER_ID; //�务� //心跳包,写心跳寄存器
G.ccmd_slaver_info[1].oper = MODBUS_OPER_WRITE_M; G.ccmd_slaver_info[1].oper = MODBUS_OPER_WRITE_M;
G.ccmd_slaver_info[1].reg = 0x02; G.ccmd_slaver_info[1].reg = 0x02;
G.ccmd_slaver_info[1].regnum = 0x01; G.ccmd_slaver_info[1].regnum = 0x01;
G.ccmd_slaver_info[1].bytes = G.ccmd_slaver_info[6].regnum * 2; G.ccmd_slaver_info[1].bytes = G.ccmd_slaver_info[1].regnum * 2;
G.ccmd_slaver_info[1].buf = (U8*)&G.p.reserved1; G.ccmd_slaver_info[1].buf = (U8*)&G.p.reserved1;
G.ccmd_slaver_info[1].mask = 0; G.ccmd_slaver_info[1].mask = 0;
G.ccmd_slaver_info[2].slaver = SLAVER_TCP_SERVER_ID; //�务器 //�程开始包 G.ccmd_slaver_info[2].slaver = SLAVER_TCP_SERVER_ID; //�务� //�程开始包
G.ccmd_slaver_info[2].oper = MODBUS_OPER_WRITE_M; G.ccmd_slaver_info[2].oper = MODBUS_OPER_WRITE_M;
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[6].regnum * 2; G.ccmd_slaver_info[2].bytes = G.ccmd_slaver_info[2].regnum * 2;
G.ccmd_slaver_info[2].buf = (U8*)&G.flowStart; G.ccmd_slaver_info[2].buf = (U8*)&G.flowStart;
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; //�务�
G.ccmd_slaver_info[3].oper = MODBUS_OPER_WRITE_M; G.ccmd_slaver_info[3].oper = MODBUS_OPER_WRITE_M;
G.ccmd_slaver_info[3].reg = 0x10; G.ccmd_slaver_info[3].reg = 0x10;
G.ccmd_slaver_info[3].regnum = 0x11; G.ccmd_slaver_info[3].regnum = 0x11;
G.ccmd_slaver_info[3].bytes = G.ccmd_slaver_info[4].regnum * 2; G.ccmd_slaver_info[3].bytes = G.ccmd_slaver_info[3].regnum * 2;
G.ccmd_slaver_info[3].buf = (U8*)&G.total_weight; G.ccmd_slaver_info[3].buf = (U8*)&G.total_weight;
G.ccmd_slaver_info[3].mask = 0; G.ccmd_slaver_info[3].mask = 0;
@ -103,43 +102,52 @@ void Lu_register_init()
G.flowStart = 0; G.flowStart = 0;
} }
void L3_protocol_handler_uart4_fun(U8 *pPara)
void L3_protocol_handler_uart4_fun(U8 *pPara,U8 from)
{ {
from = 0; if(g_at_send_status.module_ok == 0)
{
if(StrStartsWith(pPara,"OK")) //module ok if(StrStartsWith(pPara,"OK")) //module ok
{ {
g_at_send_status.module_ok = 1; g_at_send_status.module_ok = 1;
} }
else if(StrStartsWith(pPara,"+CCID")) //sim ok }
else if(g_at_send_status.sim_ok == 0)
{
if(StrStartsWith(pPara,"+CCID")) //sim ok
{ {
L0_uart0_uc('s'); L0_uart0_uc('s');
libc_memcpy(G.ccid,pPara+7,20); libc_memcpy(G.ccid,pPara+7,20);
//getPwd(G.ccid, G.ccid_passwd);
g_at_send_status.sim_ok = 1; g_at_send_status.sim_ok = 1;
} }
else if(StrStartsWith(pPara,"+CREG: 1,1")) //net ok }
else if(g_at_send_status.net_ok == 0)
{
if(StrStartsWith(pPara,"+CREG: 1,1")) //net ok
{ {
L0_uart0_uc('n'); L0_uart0_uc('n');
g_at_send_status.net_ok = 1; g_at_send_status.net_ok = 1;
} }
else if(StrStartsWith(pPara,"+CGATT:1")) //gprs ok }
else if(g_at_send_status.gprs_ok == 0)
{
if(StrStartsWith(pPara,"+CGATT:1")) //gprs ok
{ {
L0_uart0_uc('g'); L0_uart0_uc('g');
g_at_send_status.gprs_ok = 1; g_at_send_status.gprs_ok = 1;
} }
else if(StrStartsWith(pPara,"CONNECT OK") || StrStartsWith(pPara,"STATE:CONNECT OK")) //conn ok }
{ //ALREAY CONNECT??????????????¡§???????????????????????¡§????????????????????¡§?¡è??????? else if(g_at_send_status.conn_ok == 0)
if(g_at_send_status.conn_ok == 0)
{ {
if(StrStartsWith(pPara,"ALREAY") || StrStartsWith(pPara,"CONNECT OK") /*|| StrStartsWith(pPara,"STATE:CONNECT OK")*/) //conn ok
{ //ALREAY CONNECT??????????????¡§???????????????????????¡§????????????????????¡§?¡è???????
L0_uart0_uc('c'); L0_uart0_uc('c');
g_at_send_status.conn_ok = 1; g_at_send_status.conn_ok = 1;
} }
} }
else if(StrStartsWith(pPara,"CLOSE") || StrStartsWith(pPara,"STATE:CLOSED")) //conn close //CLOSE OK / CLOSED else if(g_at_send_status.conn_ok == 1)
{ {
if(g_at_send_status.conn_ok == 1) if(StrStartsWith(pPara,"CLOSE") || StrStartsWith(pPara,"STATE:CLOSED")) //conn close //CLOSE OK / CLOSED
{ {
L0_uart0_uc('d'); L0_uart0_uc('d');
g_at_send_status.conn_ok = 0; g_at_send_status.conn_ok = 0;
@ -147,288 +155,3 @@ void L3_protocol_handler_uart4_fun(U8 *pPara,U8 from)
} }
} }
} }
#if 0
U16 L2_paper_count(U8 index, U32 angle)
{
S32 x1,y1,x2,y2,x,paper;
//y = (x-x1) * (y2-y1) / (x2-x1) + y1
x1 = G.paperCalibs[index].angle0;
y1 = G.paperCalibs[index].num0;
x2 = G.paperCalibs[index].angle1;
y2 = G.paperCalibs[index].num1;
x = angle;
paper = (S16)(1.0 * (x-x1) * (y2-y1) / (x2-x1) + y1);
if(paper > 0x1FF)
{
paper = 0x1FF;
}
if(paper < 0)
{
paper = ~paper + 1;
paper |= 1<<9;
}
else
{
paper &= ~(1<<9);
}
paper &= 0x3FF;
return paper;
}
static void resetToIsp()
{
if(s_nos_tick.t_1s < G.lastResetToISPCmdTimeInSeconds)
{
//isp
IAP_CONTR = 0x60;
//disable wdt
}
else
{
G.lastResetToISPCmdTimeInSeconds = s_nos_tick.t_1s + 2; //2s(1s-2s)
}
}
U8 L2_constructor_ccmodbus_ack(TS_PH3_ccmodbus_ack *pccmodbus, U8 addr, U8 oper, U8 *buf, U8 len)
{
pccmodbus->filter1 = 0xFF;
pccmodbus->filter2 = 0xFE;
pccmodbus->num0 = (len + 4) >> 8 & 0xFF;
pccmodbus->num1 = (len + 4) >> 0 & 0xFF;
pccmodbus->addr = addr;
pccmodbus->oper = oper;
byte_copy_uc((U8*)&pccmodbus->buf, buf, len);
crc16(pccmodbus->crc, &pccmodbus->addr, len + 2);
pccmodbus->buf[len] = pccmodbus->crc[1];
pccmodbus->buf[len+1] = pccmodbus->crc[0];
return len + 6 + 2;
}
int L2_ph3_common_send(U8 dst, void *buf, U8 len)
{
switch(dst)
{
case ADDR_UPPER:
L0_uart0_sendArray(buf,len);
break;
case ADDR_SERVER:
L3_gm35_send(buf, len);
L0_uart0_uc('S');
break;
default:
break;
}
return 0;
}
void L2_do_uart_report(void)
{
TS_Printer_Report report_ack;
byte_copy_uc(&report_ack.papers[0],&G.papers[0],3);
byte_copy_uc(&report_ack.papers[1],&G.papers[1],3);
byte_copy_uc(&report_ack.boardstatus,&G.boardstatus,3);
report_ack.ir = 0;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_REPORT, (U8 *)&report_ack, sizeof(report_ack));
L2_ph3_common_send(ADDR_UPPER,(U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_gprs_send_signin_pkg(void)
{
libc_memcpy(gprsTcpPkg_Signin+4,G.ccid,20);
gprsTcpPkg_Signin[24] = ',';
libc_memcpy(gprsTcpPkg_Signin+25,G.ccid_passwd,21);
L2_ph3_common_send(ADDR_SERVER,(U8 *)&gprsTcpPkg_Signin,LEN_GPRS_TCP_PKG_AT_SIGNIN);
}
void L2_gprs_send_ack_pkg(void)
{
L2_ph3_common_send(ADDR_SERVER,(U8 *)&gprsdataack,LEN_GPRS_TCP_DATA_ACK);
}
void L2_gprs_send_heart_pkg(void)
{
TS_gprs_heart gprs_heart;
gprs_heart.version = APP_VERSION_HEX;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_SERVER, OPER_GPRS_HEART, (U8 *)&gprs_heart, sizeof(gprs_heart));
L2_ph3_common_send(ADDR_SERVER,(U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_gprs_send_report_pkg(void)
{
TS_Printer_Report report_ack;
byte_copy_uc(&report_ack.papers[0],&G.papers[0],3);
byte_copy_uc(&report_ack.papers[1],&G.papers[1],3);
byte_copy_uc(&report_ack.boardstatus,&G.boardstatus,3);
report_ack.ir = 0;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_SERVER, OPER_GPRS_REPORT, (U8 *)&report_ack, sizeof(report_ack));
L2_ph3_common_send(ADDR_SERVER,(U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_angle_setid(U8 *buf)
{
TS_Angle_SetId *ts_angle_setid = (TS_Angle_SetId*)buf;
TS_PH1A_DAT ph1a;
ph1a.filter = D_HETU_FXA;
ph1a.id = SLAVER_ID_N;
ph1a.oper = OPER_ANGLE_SET_ID;
ph1a.xaxis[0] = ts_angle_setid->id;
ph1a.xaxis[1] = ts_angle_setid->id;
ph1a.yaxis[0] = ts_angle_setid->id;
ph1a.yaxis[1] = ts_angle_setid->id;
ph1a.zaxis[0] = ts_angle_setid->id;
ph1a.zaxis[1] = ts_angle_setid->id;
L0_uart2_sendArray(&ph1a,sizeof(TS_PH1A_DAT));
}
void L2_do_angle_setid_ack(U8 id)
{
TS_Angle_SetId ts_setid_ack;
ts_setid_ack.id = id;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_SET_485_ID, (U8 *)&ts_setid_ack, sizeof(ts_setid_ack));
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_paper_count(U8 *buf)
{
TS_Paper_Count_Ack paper_count_ack;
TS_Paper_Count *ts_paper = (TS_Paper_Count*)buf;
U16 num = 0;
if(ts_paper->no >= PAPER_BOX_NUM)
{
L0_uart0_uc('x');
return;
}
num = L2_paper_count(ts_paper->no,G.currentSensorVal[ts_paper->no]);
paper_count_ack.no = ts_paper->no;
paper_count_ack.num[0] = num >> 8 & 0xFF;
paper_count_ack.num[1] = num >> 0 & 0xFF;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_PAPER_COUNT, (U8 *)&paper_count_ack, sizeof(paper_count_ack));
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_calib_read(U8 *buf)
{
TS_Paper_Upper_calib_ack upper_calib_ack;
TS_Paper_Upper_Calib_Read *ts_calib = (TS_Paper_Upper_Calib_Read*)buf;
if(ts_calib->no >= PAPER_BOX_NUM)
{
L0_uart0_uc('x');
return;
}
upper_calib_ack.num0 = G.paperCalibs[ts_calib->no].num0;
upper_calib_ack.angle0 = G.paperCalibs[ts_calib->no].angle0;
upper_calib_ack.num1 = G.paperCalibs[ts_calib->no].num1;
upper_calib_ack.angle1 = G.paperCalibs[ts_calib->no].angle1;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_CALIB_READ, (U8 *)&upper_calib_ack, sizeof(upper_calib_ack));
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_calib(U8 *buf)
{
TS_Paper_Upper_calib_ack upper_calib_ack;
TS_Paper_Upper_Calib *ts_calib = (TS_Paper_Upper_Calib*)buf;
if(ts_calib->no >= PAPER_BOX_NUM || ts_calib->point >= 2)
{
L0_uart0_uc('x');
return;
}
switch(ts_calib->point)
{
case 0:
{
G.paperCalibs[ts_calib->no].num0 = (U16)(ts_calib->paperNum0) << 8 | ts_calib->paperNum1;
G.paperCalibs[ts_calib->no].angle0 = G.currentSensorVal[ts_calib->no];
break;
}
case 1:
{
G.paperCalibs[ts_calib->no].num1 = (U16)(ts_calib->paperNum0) << 8 | ts_calib->paperNum1;
G.paperCalibs[ts_calib->no].angle1 = G.currentSensorVal[ts_calib->no];
break;
}
}
L3_flash_write_page0(); //??Flash
upper_calib_ack.num0 = G.paperCalibs[ts_calib->no].num0;
upper_calib_ack.angle0 = G.paperCalibs[ts_calib->no].angle0;
upper_calib_ack.num1 = G.paperCalibs[ts_calib->no].num1;
upper_calib_ack.angle1 = G.paperCalibs[ts_calib->no].angle1;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_CALIB, (U8 *)&upper_calib_ack, sizeof(upper_calib_ack));
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_calib_enter(void)
{
G.runmode = MODE_PAPER_CALIB;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_CALIB_MODE, NULL, 0 );
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L2_do_calib_leave(void)
{
G.runmode = MODE_RUN;
ccmodbus_len = L2_constructor_ccmodbus_ack(&ccmodbus_ack, ADDR_UPPER, OPER_CALIB_LEAVE, NULL, 0 );
L0_uart0_sendArray((U8 *)&ccmodbus_ack,ccmodbus_len);
}
void L3_protocol_handler_uart0_fun(TS_PH3_ccmodbus *p,U8 from) //0?????¡§??????????????¡§a9
{
switch(p->oper)
{
case OPER_CALIB_MODE:
L2_do_calib_enter();
break;
case OPER_CALIB_LEAVE:
L2_do_calib_leave();
break;
case OPER_CALIB:
L2_do_calib(p->buf);
break;
case OPER_CALIB_READ:
L2_do_calib_read(p->buf);
break;
case OPER_PAPER_COUNT:
L2_do_paper_count(p->buf);
break;
case OPER_SET_485_ID:
L2_do_angle_setid(p->buf);
break;
case OPER_RELAY:
L2_do_relay(p->buf);
if(from == 1)
{
L0_uart0_uc('R');
L0_uart0_uchex(p->buf[0]);
L0_uart0_uchex(p->buf[1]);
g_at_send_status.ack_flag = 1; //???¨¦???????????
}
break;
case OPER_ISP: //ResetToISP???????¡§??????¡ì???
L0_uart0_uc('P');
resetToIsp();
break;
case 0x00: //????¡¦?
L0_uart0_uc('H');
break;
case 0x99: //?¡ã?????¡§????
G.runmode = p->buf[1] & 0x0F;
Lc_print_buf("Version: %s\r\n",APP_VERSION);
Lc_delay_ms(700);// 2000--7s
break;
default:
break;
};
}
#endif

26
source/app/app_common.h

@ -193,7 +193,8 @@ typedef struct printer_maintenance_global
U16 hold_val; U16 hold_val;
CCAsGaInfo asga; CCAsGaInfo asga;
U16 rfid; U16 rfid;
U16 reserved2[16 - 9]; S32 weight[4];
//U16 reserved2[16 - 9];
MD_SLAVER_INFO md_slaver_info[MD_SLAVER_INFO_MAX]; MD_SLAVER_INFO md_slaver_info[MD_SLAVER_INFO_MAX];
CCMD_SLAVER_INFO ccmd_slaver_info[CCMD_SLAVER_INFO_MAX]; CCMD_SLAVER_INFO ccmd_slaver_info[CCMD_SLAVER_INFO_MAX];
@ -201,19 +202,8 @@ typedef struct printer_maintenance_global
vU32 modbusstmp; vU32 modbusstmp;
U16 flowStart; U16 flowStart;
U8 ccid[21]; //保存ccid卡号空间 20+'\0' U8 ccid[21]; //保存ccid卡号空间 20+'\0'
TS_BoardStatus boardstatus; TS_BoardStatus boardstatus;
#if 0
TS_PaperCalib paperCalibs[PAPER_BOX_NUM];
U16 currentSensorVal[PAPER_BOX_NUM]; //当前纸张传感输出
TS_P_paper papers[PAPER_BOX_NUM];
U8 runmode; //运行模式
U32 lastResetToISPCmdTimeInSeconds; //isp reset time
U8 ccid_passwd[22]; //保存ccid密码空间 21+'\0'
#endif
}PMGlobal; }PMGlobal;
@ -227,17 +217,7 @@ typedef struct printer_maintenance_global
extern struct printer_maintenance_global G; extern struct printer_maintenance_global G;
extern void Lu_register_init(void); extern void Lu_register_init(void);
extern U16 L2_paper_count(U8 index, U32 angle); extern void L3_protocol_handler_uart4_fun(U8 *pPara);
extern void L3_protocol_handler_uart0_fun(TS_PH3_ccmodbus *pPara,U8 from);
extern void L3_protocol_handler_uart4_fun(U8 *pPara,U8 from);
//extern U8 L2_constructor_ccmodbus_ack(TS_PH3_ccmodbus_ack *pccmodbus, U8 addr, U8 oper, U8 *buf, U8 len);
extern void L2_do_uart_report(void);
extern void L2_gprs_send_signin_pkg(void);
extern void L2_gprs_send_ack_pkg(void);
extern void L2_gprs_send_heart_pkg(void);
extern void L2_gprs_send_report_pkg(void);
extern void L2_do_angle_setid_ack(U8 id);
#endif #endif

2
source/app/app_drv.c

@ -57,7 +57,7 @@ void L3_UARTcom4_exp_protocol(TS_Handle_0d0a *p)
p->ok = 0; p->ok = 0;
array[num] = 0; array[num] = 0;
L3_protocol_handler_uart4_fun(array,0); L3_protocol_handler_uart4_fun(array);
} }
} }

28
source/app/app_task_485.c

@ -30,24 +30,6 @@ void L3_task_485_handle(TS_485 *s)
L2_task_go(D_task_485_constructor_modbus_pkg); L2_task_go(D_task_485_constructor_modbus_pkg);
TTSS_Task_step(D_task_485_constructor_modbus_pkg) TTSS_Task_step(D_task_485_constructor_modbus_pkg)
#if 0
if(s->slaverIndex == 1)
{
L0_uart0_uc(s->slaverIndex);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].slaver);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].oper);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].reg);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].regnum);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].bytes);
Lc_delay_ms(100);
L0_uart0_uc(G.md_slaver_info[s->slaverIndex].mask);
}
#endif
if(G.md_slaver_info[s->slaverIndex].mask > 0) if(G.md_slaver_info[s->slaverIndex].mask > 0)
{ {
s->pkglen = L3_pack_modbus(&s->loopPkg,G.md_slaver_info + s->slaverIndex); s->pkglen = L3_pack_modbus(&s->loopPkg,G.md_slaver_info + s->slaverIndex);
@ -61,9 +43,6 @@ void L3_task_485_handle(TS_485 *s)
} }
TTSS_Task_step(D_task_485_send_modbus_pkg) TTSS_Task_step(D_task_485_send_modbus_pkg)
//Lc_delay_ms(70);
//L0_uart2_uc(s->pkglen);
//Lc_delay_ms(70);
L0_uart2_sendArray((U8*)&s->loopPkg,s->pkglen); L0_uart2_sendArray((U8*)&s->loopPkg,s->pkglen);
s->sendStamp = s_nos_tick.t_5ms; s->sendStamp = s_nos_tick.t_5ms;
L2_task_go(D_task_485_wait_modbus_ack); L2_task_go(D_task_485_wait_modbus_ack);
@ -78,12 +57,19 @@ void L3_task_485_handle(TS_485 *s)
if(s->pAckPkg->salver == G.md_slaver_info[s->slaverIndex].slaver) if(s->pAckPkg->salver == G.md_slaver_info[s->slaverIndex].slaver)
{ {
s->ackFlag = 1; s->ackFlag = 1;
//TODO 这里可以根据modbus协议让代码通用,
if(s->pAckPkg->salver == G.md_slaver_info[0].slaver && s->pAckPkg->oper == MODBUS_OPER_READ) if(s->pAckPkg->salver == G.md_slaver_info[0].slaver && s->pAckPkg->oper == MODBUS_OPER_READ)
{ {
G.total_weight = G.total_weight =
(S32)(s->pAckPkg->buf[1]) << 24 | (S32)(s->pAckPkg->buf[2]) << 16 | (S32)(s->pAckPkg->buf[3]) << 8 (S32)(s->pAckPkg->buf[1]) << 24 | (S32)(s->pAckPkg->buf[2]) << 16 | (S32)(s->pAckPkg->buf[3]) << 8
| (S32)(s->pAckPkg->buf[4]); | (S32)(s->pAckPkg->buf[4]);
} }
else if(s->pAckPkg->salver == G.md_slaver_info[1].slaver && s->pAckPkg->oper == MODBUS_OPER_READ)
{
G.asga.xaxis = (U16)(s->pAckPkg->buf[1]) << 8 | (U16)(s->pAckPkg->buf[2]);
G.asga.yaxis = (U16)(s->pAckPkg->buf[3]) << 8 | (U16)(s->pAckPkg->buf[4]);
G.asga.zaxis = (U16)(s->pAckPkg->buf[5]) << 8 | (U16)(s->pAckPkg->buf[6]);
}
} }
} }
s->retryTimes++; s->retryTimes++;

10
source/app/app_task_gm35.c

@ -216,7 +216,7 @@ void L2_task_gm35_daemon_handle(struct _s_task_gm35_gprs_ *s)
#define TTSS_TASK_GM35_FLOW_CIPSTART_WAIT 0x0A #define TTSS_TASK_GM35_FLOW_CIPSTART_WAIT 0x0A
#define TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS 0x0B #define TTSS_TASK_GM35_FLOW_CIPSTART_SUCCESS 0x0B
#define INS_TIMEOUT 2 #define INS_TIMEOUT 10
#define GM35_SEND_DATA_INTERVAL 300 #define GM35_SEND_DATA_INTERVAL 300
#define GM35_SEND_HEART_INTERVAL 60 #define GM35_SEND_HEART_INTERVAL 60
#define GM35_SEND_CIPSTATUS_INTERVAL 5 #define GM35_SEND_CIPSTATUS_INTERVAL 5
@ -260,10 +260,9 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
if(1 == g_at_send_status.sim_ok) if(1 == g_at_send_status.sim_ok)
{ {
//Lc_print_buf("ccid: %s,",G.ccid); //Lc_print_buf("ccid: %s,",G.ccid);
L0_uart0_uc('C');
L0_uart0_sendArray(G.ccid,20); L0_uart0_sendArray(G.ccid,20);
Lc_delay_ms(100);// 2000--7s Lc_delay_ms(100);// 2000--7s
L0_uart0_uc('S'); //L0_uart0_uc('S');
//L0_uart0_sendArray(G.ccid_passwd,21); //L0_uart0_sendArray(G.ccid_passwd,21);
//Lc_print_buf("%s\r\n",G.ccid_passwd); //Lc_print_buf("%s\r\n",G.ccid_passwd);
@ -291,6 +290,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
TTSS_Task_step(TTSS_TASK_GM35_FLOW_CREG_WAIT) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CREG_WAIT)
if(1 == g_at_send_status.net_ok) if(1 == g_at_send_status.net_ok)
{ {
L0_uart0_sendstr("net ok");
G.boardstatus.a9Status = STATUS_GM35_NET_OK;//修改状态 G.boardstatus.a9Status = STATUS_GM35_NET_OK;//修改状态
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS,0); L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_GPRS,0);
} }
@ -315,6 +315,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
TTSS_Task_step(TTSS_TASK_GM35_FLOW_GPRS_WAIT) TTSS_Task_step(TTSS_TASK_GM35_FLOW_GPRS_WAIT)
if(1 == g_at_send_status.gprs_ok) if(1 == g_at_send_status.gprs_ok)
{ {
L0_uart0_sendstr("gprs ok");
G.boardstatus.a9Status = STATUS_GM35_GPRS_OK;//修改状态 G.boardstatus.a9Status = STATUS_GM35_GPRS_OK;//修改状态
L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,0); L2_task_go_Tdelay(TTSS_TASK_GM35_FLOW_CIPSTART,0);
} }
@ -331,6 +332,8 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
} }
TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART)
L0_uart0_uc('L');
L0_uart0_uc( g_at_send_status.conn_ok + '0');
L0_uart4_sendstr(AT_INS_CIPSTART); L0_uart4_sendstr(AT_INS_CIPSTART);
g_at_send_status.conn_ok = 0; g_at_send_status.conn_ok = 0;
g_at_send_status.ins_stmp = s_nos_tick.t_1s; g_at_send_status.ins_stmp = s_nos_tick.t_1s;
@ -339,6 +342,7 @@ void L2_task_gm35_flow_handle(struct _s_task_gm35_gprs_ *s)
TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT) TTSS_Task_step(TTSS_TASK_GM35_FLOW_CIPSTART_WAIT)
if(1 == g_at_send_status.conn_ok) if(1 == g_at_send_status.conn_ok)
{ {
L0_uart0_sendstr("conn ok");
//L3_task_gm35_send_init(); //初始化发送任务 //L3_task_gm35_send_init(); //初始化发送任务
g_at_send_status.heart_stmp = s_nos_tick.t_1s; g_at_send_status.heart_stmp = s_nos_tick.t_1s;

3
source/app/app_task_gm35.h

@ -24,7 +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\",\"test.tall.wiki\",8195\r\n" #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"test.tall.wiki\",38195\r\n"
//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n"
//#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"weizezhao.imwork.net\",49809\r\n" //连接服务器 //#define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"weizezhao.imwork.net\",49809\r\n" //连接服务器
// #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" //连接服务器 // #define AT_INS_CIPSTART "AT+CIPSTART=\"TCP\",\"43.249.193.233\",38916\r\n" //连接服务器
#define AT_INS_CIPSEND "AT+CIPSEND\r\n" //发送数据 #define AT_INS_CIPSEND "AT+CIPSEND\r\n" //发送数据

13
source/app/app_task_tcp.c

@ -1,6 +1,7 @@
#include "app_task_tcp.h" #include "app_task_tcp.h"
#include "../msp/uart0.h" #include "../msp/uart0.h"
#include "../msp/uart4.h" #include "../msp/uart4.h"
#include "../app/app_task_gm35.h"
#include "../app/app_common.h" #include "../app/app_common.h"
#define MODBUS_SLAVER_DW20_REG_START 0x02 #define MODBUS_SLAVER_DW20_REG_START 0x02
@ -43,12 +44,14 @@ void L3_task_tcp_handle(TS_tcp *s)
} }
TTSS_Task_step(D_task_tcp_send_modbus_pkg) TTSS_Task_step(D_task_tcp_send_modbus_pkg)
L0_uart4_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_5ms; s->sendStamp = s_nos_tick.t_5ms;
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)
if(s_nos_tick.t_5ms - s->sendStamp >= 20) if(s_nos_tick.t_5ms - s->sendStamp >= 200)
{ {
if(s_uart4_tcp_rec.ok) if(s_uart4_tcp_rec.ok)
{ {
@ -57,12 +60,6 @@ void L3_task_tcp_handle(TS_tcp *s)
if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver) if(s->pAckPkg->slaver == G.ccmd_slaver_info[s->slaverIndex].slaver)
{ {
s->ackFlag = 1; s->ackFlag = 1;
if(s->pAckPkg->slaver == G.ccmd_slaver_info[0].slaver && s->pAckPkg->oper == MODBUS_OPER_READ)
{
G.total_weight =
(S32)(s->pAckPkg->buf[1]) << 24 | (S32)(s->pAckPkg->buf[2]) << 16 | (S32)(s->pAckPkg->buf[3]) << 8
| (S32)(s->pAckPkg->buf[4]);
}
} }
} }
s->retryTimes++; s->retryTimes++;

5
source/app/app_task_tcp_control.c

@ -2,6 +2,7 @@
#include "../msp/uart0.h" #include "../msp/uart0.h"
#include "../app/app_common.h" #include "../app/app_common.h"
#include "../app/app_task_gm35.h" #include "../app/app_task_gm35.h"
#include "../app/app_task_tcp.h"
TS_tcp_control ts_tcp_control; TS_tcp_control ts_tcp_control;
@ -25,6 +26,8 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
{ {
if(g_at_send_status.conn_ok) if(g_at_send_status.conn_ok)
{ {
L3_task_tcp_init();
//发送认证包 //发送认证包
G.ccmd_slaver_info[0].mask = 1; G.ccmd_slaver_info[0].mask = 1;
@ -41,7 +44,7 @@ void L3_task_tcp_control_handle(TS_tcp_control *s)
if(s->conn_ok_pool) if(s->conn_ok_pool)
{ {
if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 4) if(s_nos_tick.t_1s - ts_tcp_control.tcp_send_stmp >= 3)
{ {
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;

28
source/app/main.c

@ -97,6 +97,8 @@ void L0_main_init(void)
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_control_init();
} }
//=============================================== //===============================================
@ -139,7 +141,6 @@ void main(void)
//master->slaver发送逻辑控制 //master->slaver发送逻辑控制
L3_task_485_control_handle(&ts_485_control); L3_task_485_control_handle(&ts_485_control);
#if 0
//gm35维持连接 //gm35维持连接
L3_task_gm35_core_handle(); L3_task_gm35_core_handle();
L3_UARTcom4_exp_protocol(&s_uart4_at_rec); L3_UARTcom4_exp_protocol(&s_uart4_at_rec);
@ -149,31 +150,6 @@ void main(void)
//master->slaver发送逻辑控制 //master->slaver发送逻辑控制
L3_task_tcp_control_handle(&ts_tcp_control); L3_task_tcp_control_handle(&ts_tcp_control);
#endif
#if 0
//看门狗
L3_task_wdt_handle(&s_task_wdt);
//每隔n秒,主动向上位机发送心跳包
//L3_task_report_handle(&s_task_report);
//解析串口0协议(上位机发送的控制消息)
L3_UARTcom0_exp_protocol(&s_uart0_rec);
//gsm模块初始化+tcp发送消息
//L3_task_a9_handle();
L3_task_gm35_core_handle();
//解析串口4协议(gsm模块收到的at响应消息+服务器发送消息)
L3_UARTcom4_exp_protocol(&s_uart4_at_rec);
//解析串口4+CIPRCV协议
L3_task_a9_rcv_handle(&s_uart4_tcp_rec);
//继电器PC按键弹起
L3_task_relay_handle(&s_task_relay);
#endif
} }
}//end main }//end main

12
source/ctask/tick.h

@ -35,16 +35,16 @@ extern struct _s_nos_tick_ s_nos_tick;
//D_debug_sim_usinghhh //D_debug_sim_usinghhh
//10ms 不能使用,10ms是最小颗粒时长,存在误差,无法使用 //10ms 不能使用,10ms是最小颗粒时长,存在误差,无法使用
#define D_Tdelay_ms D_TIMER0_50MS_COUNT//D_TIMER0_10MS_COUNT #define D_Tdelay_5ms D_TIMER0_5MS_COUNT//D_TIMER0_10MS_COUNT
#define D_Tdelay_100ms (D_Tdelay_ms+2) #define D_Tdelay_100ms (D_Tdelay_5ms+20)
#define D_Tdelay_200ms (D_Tdelay_ms+4) #define D_Tdelay_200ms (D_Tdelay_5ms+40)
#define D_Tdelay_300ms (D_Tdelay_ms+6) #define D_Tdelay_300ms (D_Tdelay_5ms+60)
#define D_Tdelay_400ms (D_Tdelay_ms+8) #define D_Tdelay_400ms (D_Tdelay_5ms+80)
#define D_Tdelay_1s (D_Tdelay_ms+20) #define D_Tdelay_1s (D_Tdelay_5ms+200)
#define D_Tdelay_2s (D_Tdelay_1s*2) #define D_Tdelay_2s (D_Tdelay_1s*2)
#define D_Tdelay_3s (D_Tdelay_1s*3) #define D_Tdelay_3s (D_Tdelay_1s*3)
#define D_Tdelay_5s (D_Tdelay_1s*5) #define D_Tdelay_5s (D_Tdelay_1s*5)

1
source/msp/time.h

@ -13,6 +13,7 @@ extern void L0_timer0_Init(void);
//#define D_TIMER0_10MS_COUNT 1 //定时器为 10ms一中断 //#define D_TIMER0_10MS_COUNT 1 //定时器为 10ms一中断
#define D_TIMER0_50MS_COUNT 1 //定时器为 50ms一中断 #define D_TIMER0_50MS_COUNT 1 //定时器为 50ms一中断
#define D_TIMER0_5MS_COUNT 1 //定时器为 50ms一中断
#define D_1us_delay_para 1 #define D_1us_delay_para 1

2
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

Loading…
Cancel
Save