ml307a.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "ml307a.h"
  2. #include "mba32a.h"
  3. uint8_t u4length=0;
  4. uint8_t resetcount_4g=0;
  5. bool u4RecvFlag = false;
  6. bool ml307aFail = false;
  7. uint8_t g_ML307A_8buf[2048]={0};
  8. uint8_t g_ML307A_8buf_Down[2048]={0};
  9. extern UART_HandleTypeDef huart3;
  10. extern UART_HandleTypeDef huart4;
  11. uint8_t sendCmd_4G(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
  12. void ML307A_Init(void)
  13. {
  14. HAL_Delay(2000);
  15. INIT_4G_FRAME();
  16. if(!sendCmd_4G("AT\r\n","OK",1,1))
  17. {
  18. ml307aFail=true;
  19. printf("4G模组异常!\r\n");
  20. }
  21. if (ml307aFail)
  22. {
  23. printf("#4G模块初始化Fail");
  24. }
  25. else
  26. {
  27. HAL_Delay(2000);
  28. if (sendCmd_4G("AT+CPIN?\r\n", "+CME ERROR: 10", 1, 1)) // 00检测是否有SIM卡 <+CPIN: READY\r\nOK>
  29. {
  30. printf("\tERROR!-->未检测到SIM卡\r\n");
  31. OLED_ShowString(42,50,"NO_SIM",12,0);
  32. }
  33. }
  34. }
  35. uint8_t sendCmd_4G(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
  36. {
  37. uint8_t i = 0;
  38. uint32_t time;
  39. for(i = 0; i < sendNum; i++)
  40. {
  41. time = timeOut * 10;
  42. USART_SendString(&huart4, pCmd);
  43. HAL_Delay(50);
  44. printf("------->%s",g_ML307A_8buf_Down);
  45. while(time--)
  46. {
  47. if(strstr((const char *)g_ML307A_8buf_Down, pRes) != NULL) // 如果检索到关键词
  48. {
  49. return 1;
  50. }
  51. HAL_Delay(100);
  52. }
  53. }
  54. return 0;
  55. }