diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym index 21fd519..630ec58 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym and b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc index 16710c8..3fd7e2d 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc and b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf index 33b1f24..ff93a37 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf and b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm index ee90016..3bb8341 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm and b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr index 22c444f..3d029cc 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr and b/si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.siproj b/si4/soft_gsm_main.si4project/soft_gsm_main.siproj index 6686ac3..86b2e37 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.siproj and b/si4/soft_gsm_main.si4project/soft_gsm_main.siproj differ diff --git a/si4/soft_gsm_main.si4project/soft_gsm_main.siwork b/si4/soft_gsm_main.si4project/soft_gsm_main.siwork index 85146f5..230c2cf 100644 Binary files a/si4/soft_gsm_main.si4project/soft_gsm_main.siwork and b/si4/soft_gsm_main.si4project/soft_gsm_main.siwork differ diff --git a/source/app/app_task_485.c b/source/app/app_task_485.c index 8b3b793..d0e06cb 100644 --- a/source/app/app_task_485.c +++ b/source/app/app_task_485.c @@ -48,74 +48,68 @@ void L3_task_485_handle(TS_485 *s) L2_task_go(D_task_485_wait_modbus_ack); TTSS_Task_step(D_task_485_wait_modbus_ack) - if(s_nos_tick.t_5ms - s->sendStamp >= 8) + if(s_uart2_rec.ok)//接收到ack { - if(s_uart2_rec.ok) + s_uart2_rec.ok = 0; + s->pAckPkg = (TS_PH4_modbus*)(s_uart2_rec.buf); + if((s->pAckPkg->salver != G.md_slaver_info[s->slaverIndex].slaver) || + (s->pAckPkg->oper != G.md_slaver_info[s->slaverIndex].oper)) { - s_uart2_rec.ok = 0; - s->pAckPkg = (TS_PH4_modbus*)(s_uart2_rec.buf); - if(s->pAckPkg->salver == G.md_slaver_info[s->slaverIndex].slaver) + return; + } + + if(G.md_slaver_info[s->slaverIndex].mask == 1) + { + G.md_slaver_info[s->slaverIndex].mask = 0; + } + + switch(s->slaverIndex) + { + case 0: + 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]); + + G.jing_weight = (G.total_weight <= G.pi_weight) ? (0) :(G.total_weight - G.pi_weight) ; + break; + case 1: + 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]); + break; + case 4: + if(s->pAckPkg->buf[2] != G._keyled) //按键发生改变 { - s->ackFlag = 1; - if(G.md_slaver_info[s->slaverIndex].mask == 1) + G._keyled = s->pAckPkg->buf[2]; + L0_uart0_uchex(G._keyled); + if(G._keyled == 0) { - G.md_slaver_info[s->slaverIndex].mask = 0; + //TODO } - - //TODO 这里可以根据modbus协议让代码通用 - if(s->pAckPkg->oper == MODBUS_OPER_READ) + else if(G._keyled == 0x28) { - if(s->pAckPkg->salver == G.md_slaver_info[0].slaver) - { - 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]); - - if(G.total_weight <= G.pi_weight){ - G.jing_weight = 0; - }else - { - G.jing_weight = G.total_weight - G.pi_weight; - } - } - else if(s->pAckPkg->salver == G.md_slaver_info[1].slaver) - { - 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]); - } - else if(s->pAckPkg->salver == G.md_slaver_info[4].slaver) - { - if(s->pAckPkg->buf[2] != G._keyled) //按键发生改变 - { - G._keyled = s->pAckPkg->buf[2]; - L0_uart0_uchex(G._keyled); - if(G._keyled == 0) - { - //TODO - } - else if(G._keyled == 0x28) - { - L0_uart0_uc('#'); - G.pi_weight = G.total_weight; - } - else - { - G.rfid = G._keyled; - } - } - } - else if(s->pAckPkg->salver == G.md_slaver_info[5].slaver) - { - G.asga_02.xaxis = (U16)(s->pAckPkg->buf[1]) << 8 | (U16)(s->pAckPkg->buf[2]); - G.asga_02.yaxis = (U16)(s->pAckPkg->buf[3]) << 8 | (U16)(s->pAckPkg->buf[4]); - G.asga_02.zaxis = (U16)(s->pAckPkg->buf[5]) << 8 | (U16)(s->pAckPkg->buf[6]); - } + L0_uart0_uc('#'); + G.pi_weight = G.total_weight; } + } + else + { + G.rfid = G._keyled; } + break; + case 5: + G.asga_02.xaxis = (U16)(s->pAckPkg->buf[1]) << 8 | (U16)(s->pAckPkg->buf[2]); + G.asga_02.yaxis = (U16)(s->pAckPkg->buf[3]) << 8 | (U16)(s->pAckPkg->buf[4]); + G.asga_02.zaxis = (U16)(s->pAckPkg->buf[5]) << 8 | (U16)(s->pAckPkg->buf[6]); + break; } - s->retryTimes++; - if(s->ackFlag || s->retryTimes >= MODBUS_SLAVER_RETRY_MAX_TIME) + //TODO 这里可以根据modbus协议让代码通用 + } + else if(s_nos_tick.t_5ms - s->sendStamp >= 8) //超时 + { + if(++s->retryTimes >= MODBUS_SLAVER_RETRY_MAX_TIME) { L2_task_go(D_task_485_switch_next_slaver); } @@ -124,7 +118,10 @@ void L3_task_485_handle(TS_485 *s) L2_task_go(D_task_485_send_modbus_pkg); } } - + else//未收到未超时 + { + //继续等待 + } TTSS_Task_step(D_task_485_switch_next_slaver) if(++ s->slaverIndex >= MD_SLAVER_INFO_MAX) { diff --git a/source/app/app_task_rfid.c b/source/app/app_task_rfid.c index f31693e..628b937 100644 --- a/source/app/app_task_rfid.c +++ b/source/app/app_task_rfid.c @@ -14,17 +14,24 @@ void L3_task_rfid_init(void) 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 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}; + void L1_enable_rfid() { - L0_uart0_sendArray(rfid_start_pkg,10); - L0_uart3_sendArray(rfid_start_pkg,10); + //L0_uart0_sendArray(rfid_start_pkg,10); + //L0_uart3_sendArray(rfid_start_pkg,10); + L0_uart0_sendArray(newrfid_start_pkg,15); + L0_uart3_sendArray(newrfid_start_pkg,15); } void L1_disable_rfid() { - L0_uart0_sendArray(rfid_stop_pkg,7); - L0_uart3_sendArray(rfid_stop_pkg,7); + //L0_uart0_sendArray(rfid_stop_pkg,7); + //L0_uart3_sendArray(rfid_stop_pkg,7); + L0_uart0_sendArray(newrfid_stop_pkg,6); + L0_uart3_sendArray(newrfid_stop_pkg,6); } #define D_task_rfid_send 0x51 diff --git a/source/bsp/bsp_config.h b/source/bsp/bsp_config.h index 800b603..d210e34 100644 --- a/source/bsp/bsp_config.h +++ b/source/bsp/bsp_config.h @@ -104,6 +104,10 @@ #define BRT_9600 9600 #define D_uart0_BRT BRT_115200 + #define D_uart2_BRT BRT_115200 + #define D_uart3_BRT BRT_115200 + #define D_uart4_BRT BRT_115200 + #define D_sys_Fosc 11059200L //系统频率 #define MainFre_5M 0 #define MainFre_11M 1 diff --git a/source/msp/UART2.c b/source/msp/UART2.c index 5626ba5..9f4d2a3 100644 --- a/source/msp/UART2.c +++ b/source/msp/UART2.c @@ -60,7 +60,6 @@ msp/uartx.c 底层代码 和cpu相关 缓存发送也放在里面 struct _s_uart2_send_buf_ s_uart2_send_shop; struct _s_uart2_send_buf_ s_uart2_send_depot; -#define FOSC 11059200L //系统频率 //#define BAUD2 4800 //串口波特率 //#define BAUD2 9600 //串口波特率 #define BAUD2 115200 //串口波特率 @@ -68,8 +67,10 @@ void L0_uart2_init(void) { S2CON = 0x50; //8位数据,可变波特率 AUXR |= 0x04; //定时器2时钟为Fosc,即1T - T2L = 0xE8; //设定定时初值 - T2H = 0xFF; //设定定时初值 + //T2L = 0xE8; //设定定时初值 + //T2H = 0xFF; //设定定时初值 + T2L = (65536-(D_sys_Fosc/4/D_uart2_BRT)); //设定定时初值 + T2H = (65536-(D_sys_Fosc/4/D_uart2_BRT))>>8; //设定定时初值 AUXR |= 0x10; //启动定时器2 //设置txd2为强推挽