#include "ml307a.h" /** * @breaf 本页定义 */ bool u4RecvFlag = false; bool reset4Gmodule = false; bool ml307aFail = false; bool module4G_init = false; uint8_t u4length = 0; uint8_t resetcount_4g=0; uint8_t g_ML307A_8buf[2048]={0}; uint8_t g_ML307A_8buf_Down[2048]={0}; /** * @breaf 本页方法 */ void ML307AReset(void); //4G模块重启 uint8_t sendCmd_4G(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum); /** * @breaf 外部声明 */ extern UART_HandleTypeDef huart4; void ML307A_Init(void) { //4Gled 隔1s快闪搜网未注册,隔2s为成功注册上网络 //<***> 单括号内为正常回复 if(!module4G_init) //复位需同时变true return; INIT_4G_FRAME(); if(!sendCmd_4G("AT\r\n","OK",1,1)) { ml307aFail=true; printf("4G模组异常!\r\n"); } if(sendCmd_4G("AT+CPIN?\r\n","+CME ERROR: 10",1,1)) //00检测是否有SIM卡 <+CPIN: READY\r\nOK> { printf("未检测到SIM卡\r\n"); } else if(ml307aFail) { printf("#4G模块初始化Fail"); } else if(!ml307aFail) { if(sendCmd_4G("AT+CSQ\r\n","ERROR",1,1)) //01查询信号值(信号强度,误码率) <+CSQ: 26,99\r\nOK> {printf("查询信号Fail\r\n");} if(sendCmd_4G("AT+CEREG?\r\n","ERROR",1,1)) //02查询附着成功(驻网:*,@ @为1或5表示附着成功) <+CEREG: 0,1\r\nOK> {printf("查询驻网Fail\r\n");} if(sendCmd_4G("AT+MIPCALL?\r\n","ERROR",1,1)) //03查询PDP激活状态 <+MIPCALL: 1,1,"10.94.99.162"\r\nOK> {printf("查询PDP激活状态Fail\r\n");} } //初始化后Todo module4G_init=false; } /** * @breaf 串口发送命令,有接收数组比较函数 */ uint8_t sendCmd_4G(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum) { uint8_t i = 0; uint32_t time; for(i = 0; i < sendNum; i++) { time = timeOut * 10; USART_SendString(&huart4, pCmd); HAL_Delay(50); printf("------->%s",g_ML307A_8buf_Down); while(time--) { if(strstr((const char *)g_ML307A_8buf_Down, pRes) != NULL) // 如果检索到关键词 { memset(g_ML307A_8buf_Down,0,u4length); return 1; } HAL_Delay(100); } } return 0; } /** @brief 重启模块 @param 无 @return 无 */ void ML307AReset(void) { reset4Gmodule=true; resetcount_4g+=1; printf("4G Module_Reset\n"); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); HAL_Delay(5000); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); } void Transfer4GBuff(void) { if(u4RecvFlag) { u4RecvFlag=false; memset(g_ML307A_8buf_Down,0,2048); memcpy(g_ML307A_8buf_Down,g_ML307A_8buf,u4length); } }