| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- #include "ProgramRun.h"
- #include "FifoQueue.h"
- #include "Config.h" //常用功能
- #include "Bat.h" //电池
- #include "Beep.h" //蜂鸣器
- #include "Keys.h" //按键
- #include "3G_A8500.h" //3G
- #include "Uart.h" //串口
- #include "Fas_Base.h" //fas处理
- #include "ParaConfig.h" //falsh配置
- #include "Fas_Test485.h" //测试485
- #include "Fas_Test232.h" //测试232
- #include "Mypara.h"
- #include "Exit.h" //外部中断
- #include "Led.h" //led
- #include "Fas_Base.h"
- #include "Fas_YDH30P_Alone.h"
- #include "Fas_ZZSA_dianhutanceqi.h"
- #include "Fas_CJ_xianliuqi.h"
- #include "Fas_YDH10P.h"
- tPubAppEvents PubAppEvent;
- tFasAppStates FasAppState;
- tFasAppEvents FasAppEvent;
- /* 此函数仅用于超时计时
- 计时速度必须大于T10MS_EV_Handler, 不然T10MS_EV_Handler会重复执行
- */
- void T10MS_Count_Handler ( void ) //10ms
- {
- //3g计时
- a8500_delay_cnt += 10;
- if ( a8500_delay_cnt >= 60000 ) //0~60000
- {
- a8500_delay_cnt = 0;
- }
- Fas_T10MS_Even();
- }
- /*
- 按测试按键切换正常模式和测试模式
- 测试模式:
- 1.发送485,原数据返回
- 2.发送232,生产配置IP 端口等
- 正常模式:
- 1.发送485,雅达-独立式
- 2.发送232,原数据返回
- */
- void T10MS_EV_Handler ( void )
- {
- A8500_Handler(); //3g模块,不要太快,最好大于1ms。模块初始化
- switch ( SysRunType ) //切换协议
- {
- case SysRun_Norm:
- Fas_Handler();
- break;
- case SysRun_Test: //按测试按键切换正常模式和测试模式
- Fas_Handler(); //测试:MCU -> 雅达参数
- ProduSet_Handler(); //测试:工具->MCU 参数
- Test232_Handler();
- Test485_Handler();
- break;
- }
- }
- void T100MS_EV_Handler ( void )
- {
- Hard_FeedDog(); //硬件看门狗
- LedEven(); //LED处理
- }
- void T1S_EV_Handler ( void )
- {
- DC_BAT_Handler(); //adc任务,电量采集
- if ( SysRunType == SysRun_Test )
- {
- Gprs_Msg_3s_Even(); //测试模式,无效
- }
- }
- void T1min_EV_Handler ( void )
- {
- static u8 CTime_min = 0;
- if ( SysPara.CTime )
- {
- if ( CTime_min++ >= SysPara.CTime * 30 ) //巡检一次,单位0.5小时
- {
- CTime_min = 0;
- QueueIn ( &Pub_Tasks, CTIME_EV );
- Set_All485_CTimeFlag(); //参数获取:巡检,之后返回成功或失败
- }
- }
- }
- void T8min_EV_Handler ( void )
- {
- DTU_Heart(); //心跳
- }
- void Time_EV_Handler ( void )
- {
- if ( System_Flag_10Ms )
- {
- System_Flag_10Ms = 0;
- T10MS_EV_Handler(); //设备状态获取,参数配置,以及数据的发送
- }
- if ( System_Flag_100Ms )
- {
- System_Flag_100Ms = 0;
- T100MS_EV_Handler(); //LED处理,和喂硬件看门狗
- }
- if ( System_Flag_1s )
- {
- System_Flag_1s = 0;
- T1S_EV_Handler(); //网关电池电量的计算处理,以及网关数据发送
- }
- if ( System_Flag_1min )
- {
- System_Flag_1min = 0;
- T1min_EV_Handler(); //切换到巡检数据发送状态
- }
- if ( System_Flag_8min )
- {
- System_Flag_8min = 0;
- T8min_EV_Handler(); //心跳包的发送
- }
- }
- /**********************信号处理函数**************************/
- void UART1_RECV_EV_Handler ( void ) //485
- {
- switch ( SysRunType ) //切换协议
- {
- case SysRun_Norm:
- Fas_Recv_A_Frame_Msg();
- break;
- case SysRun_Test:
- if ( Test485_Recv_A_Frame_Msg() );
- else if ( Fas_Recv_A_Frame_Msg() );
- break;
- }
- }
- void UART2_RECV_EV_Handler ( void ) //3g
- {
- A8500_Recv_A_Frame_Msg();
- }
- void UART3_RECV_EV_Handler ( void ) //232口用+配置串口
- {
- switch ( SysRunType ) //切换协议
- {
- case SysRun_Norm:
- break;
- case SysRun_Test:
- if ( Test232_Recv_A_Frame_Msg() );
- else if ( ProduSet_Recv_A_Frame_Msg() );
- break;
- }
- }
- /************************* Application States & Events **************************/
- void Ignore ( void )
- {}
- void CTIME_EV_Handler ( void )
- {
- DTU_Msg ( Command_DevPoll, Get_All485State() );
- }
- const tAppStateFp PubAppTb[PUBAPP_MAX_EV] =
- {
- // ** STATE *** *** EVENT ** //
- &Ignore, //ACDC_EV,
- &KGL_IN_Hanlder, //KGL_IN_EV,
- &Key_XY_Hanlder, //KEY_XY_EV, //消音
- &Key_CS_Hanlder, //KEY_CS_EV, //测试
- &Ignore, //KGL_IN_LONG_EV,
- &Key_XY_Long_Hanlder, //KEY_XY_LONG_EV, //长按消音键
- &Key_CS_Long_Hanlder, //KEY_CS_LONG_EV, //长按测试键
- &UART1_RECV_EV_Handler, //UART1_RECV_EV,
- &UART2_RECV_EV_Handler, //UART2_RECV_EV,
- &UART3_RECV_EV_Handler, //UART3_RECV_EV,
- &CTIME_EV_Handler, //CTIME_EV,
- };
- const tAppStateFp FasAppTb[FAS_MAX_ST][FASAPP_MAX_EV] =
- {
- // ** STATE *** *** EVENT ** //
- {
- &Ignore,
- &Ignore,
- },
- };
- //if(QueueIn(&SysMsg,i) == QueueFull) break;
- //if(QueueOut(&SysMsg,&sh) == QueueEmpty) break;
- void Init_Param ( void )
- {
- QueueInit ( &Fas_Tasks ); //fas协议任务
- QueueInit ( &Pub_Tasks ); //公共任务
- WGpara.GPRS = 0x01; //网络制式 2G网络
- WGpara.YYS = 0x01; //运营商 1:中国移动
- EnableMsg.XX = 1;
- }
- /**********************************封包**********************************************/
|