at.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. /**
  2. * author wulianwei
  3. * title 通信模块AT基础指令
  4. */
  5. #include "stm32f10x.h"
  6. #include "sys.h"
  7. #include "at.h"
  8. //C库
  9. #include <string.h>
  10. #include <stdio.h>
  11. extern uart_recv_t uart_recv;
  12. //==========================================================
  13. // 函数名称: at_send_simple_cmd
  14. //
  15. // 函数功能: 发送命令
  16. //
  17. // 入口参数: cmd:命令
  18. //
  19. //
  20. // 说明:
  21. //==========================================================
  22. void at_send_simple_cmd(char *cmd)
  23. {
  24. uart_recv_clear();
  25. Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
  26. }
  27. //==========================================================
  28. // 函数名称: at_send_cmd
  29. //
  30. // 函数功能: 发送命令
  31. //
  32. // 入口参数: cmd:命令
  33. // res:需要检查的返回指令
  34. //
  35. // 返回参数: 0-成功 -1-失败
  36. //
  37. // 说明:
  38. //==========================================================
  39. int at_send_cmd(char *cmd, char *res)
  40. {
  41. int timeOut = 250;
  42. uart_recv_clear();
  43. Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
  44. if(!uart_recv_match_wait(res,timeOut))
  45. {
  46. //UsartPrintf(USART_DEBUG,"指令返回%d:%s\r\n",uart_recv.len,uart_recv.buf);
  47. uart_recv_clear();
  48. return 0;
  49. }
  50. uart_recv_clear();
  51. return -1;
  52. }
  53. //==========================================================
  54. // 函数名称: at_send_cmd
  55. //
  56. // 函数功能: 发送命令
  57. //
  58. // 入口参数: cmd:命令
  59. // data:存储返回结果
  60. // size: 结果大小
  61. //
  62. //
  63. // 说明:
  64. //==========================================================
  65. void at_send_cmd_back(char *cmd, char data[], int size)
  66. {
  67. int timeOut = 250;
  68. memset(data,0,size);
  69. uart_recv_clear();
  70. Usart_SendString(USART2, (unsigned char *)cmd, strlen(cmd));
  71. uart_recv_wait(timeOut);
  72. if(uart_recv.recv_flag == REV_OK)
  73. {
  74. snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
  75. uart_recv_clear();
  76. }
  77. }
  78. //==========================================================
  79. // 函数名称: at_send_cmd_match_back
  80. //
  81. // 函数功能: 发送命令
  82. //
  83. // 入口参数: cmd:命令
  84. // res: 匹配的字符串
  85. // data:存储返回结果
  86. // size: 结果大小
  87. //
  88. // 返回参数: 0-成功 -1-失败
  89. // 说明:
  90. //==========================================================
  91. int at_send_cmd_match_back(char *cmd,char *res, char data[], int size)
  92. {
  93. int timeOut = 250;
  94. memset(data,0,size);
  95. uart_recv_clear();
  96. Usart_SendString(USART2, (unsigned char *)cmd, strlen(cmd));
  97. if(!uart_recv_match_wait(res,timeOut))
  98. {
  99. snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
  100. uart_recv_clear();
  101. return 0;
  102. }
  103. uart_recv_clear();
  104. return -1;
  105. }
  106. //==========================================================
  107. // 函数名称: at_send_cmd_back_wait
  108. //
  109. // 函数功能: 发送命令
  110. //
  111. // 入口参数: cmd:命令
  112. // data:存储返回结果
  113. // size: 结果大小
  114. // wait: 等待返回时间
  115. //
  116. //
  117. // 说明:
  118. //==========================================================
  119. void at_send_cmd_back_wait(char *cmd, char data[], int size, int wait)
  120. {
  121. memset(data,0,size);
  122. uart_recv_clear();
  123. Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
  124. delay_ms(wait);
  125. snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
  126. uart_recv_clear();
  127. }
  128. //==========================================================
  129. // 函数名称: at_send_byte
  130. //
  131. // 函数功能: 数据模式下发送数据
  132. //
  133. // 入口参数: data: 数据
  134. // size: 数据大小
  135. //
  136. // 返回参数: 0-成功 -1-失败
  137. //
  138. // 说明:
  139. //==========================================================
  140. int at_send_byte(char *data, int size, char *res)
  141. {
  142. int timeOut = 250;
  143. uart_recv_clear();
  144. Usart_SendString(USART2, (unsigned char *)data, size);
  145. if(!uart_recv_match_wait(res,timeOut))
  146. {
  147. //uart_recv_clear();
  148. return 0;
  149. }
  150. //uart_recv_clear();
  151. return -1;
  152. }