Browse Source

v2.0.4 新增4通道RFID轮询协议

pingche_yh2
ysw 4 years ago
parent
commit
baf1e55ede
  1. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_sym
  2. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xc
  3. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf
  4. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xm
  5. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.sip_xr
  6. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siproj
  7. BIN
      si4/soft_gsm_main.si4project/soft_gsm_main.siwork
  8. 117
      source/app/app_task_485.c
  9. 15
      source/app/app_task_rfid.c
  10. 4
      source/bsp/bsp_config.h
  11. 7
      source/msp/UART2.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.sip_xc

Binary file not shown.

BIN
si4/soft_gsm_main.si4project/soft_gsm_main.sip_xf

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_xr

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.

117
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)
{

15
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

4
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

7
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为强推挽

Loading…
Cancel
Save