| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- /**
- * author wulianwei
- * title 通信模块AT基础指令
- */
- #include "stm32f10x.h"
- #include "sys.h"
- #include "at.h"
- //C库
- #include <string.h>
- #include <stdio.h>
- extern uart_recv_t uart_recv;
- //==========================================================
- // 函数名称: at_send_simple_cmd
- //
- // 函数功能: 发送命令
- //
- // 入口参数: cmd:命令
- //
- //
- // 说明:
- //==========================================================
- void at_send_simple_cmd(char *cmd)
- {
-
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
- }
- //==========================================================
- // 函数名称: at_send_cmd
- //
- // 函数功能: 发送命令
- //
- // 入口参数: cmd:命令
- // res:需要检查的返回指令
- //
- // 返回参数: 0-成功 -1-失败
- //
- // 说明:
- //==========================================================
- int at_send_cmd(char *cmd, char *res)
- {
-
- int timeOut = 250;
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
- if(!uart_recv_match_wait(res,timeOut))
- {
- //UsartPrintf(USART_DEBUG,"指令返回%d:%s\r\n",uart_recv.len,uart_recv.buf);
- uart_recv_clear();
- return 0;
- }
- uart_recv_clear();
- return -1;
- }
- //==========================================================
- // 函数名称: at_send_cmd
- //
- // 函数功能: 发送命令
- //
- // 入口参数: cmd:命令
- // data:存储返回结果
- // size: 结果大小
- //
- //
- // 说明:
- //==========================================================
- void at_send_cmd_back(char *cmd, char data[], int size)
- {
-
- int timeOut = 250;
- memset(data,0,size);
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)cmd, strlen(cmd));
-
- uart_recv_wait(timeOut);
- if(uart_recv.recv_flag == REV_OK)
- {
- snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
- uart_recv_clear();
- }
-
- }
- //==========================================================
- // 函数名称: at_send_cmd_match_back
- //
- // 函数功能: 发送命令
- //
- // 入口参数: cmd:命令
- // res: 匹配的字符串
- // data:存储返回结果
- // size: 结果大小
- //
- // 返回参数: 0-成功 -1-失败
- // 说明:
- //==========================================================
- int at_send_cmd_match_back(char *cmd,char *res, char data[], int size)
- {
-
- int timeOut = 250;
- memset(data,0,size);
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)cmd, strlen(cmd));
-
- if(!uart_recv_match_wait(res,timeOut))
- {
- snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
- uart_recv_clear();
- return 0;
- }
- uart_recv_clear();
- return -1;
- }
- //==========================================================
- // 函数名称: at_send_cmd_back_wait
- //
- // 函数功能: 发送命令
- //
- // 入口参数: cmd:命令
- // data:存储返回结果
- // size: 结果大小
- // wait: 等待返回时间
- //
- //
- // 说明:
- //==========================================================
- void at_send_cmd_back_wait(char *cmd, char data[], int size, int wait)
- {
- memset(data,0,size);
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
- delay_ms(wait);
- snprintf((char*)data,size,"%s",(char*)uart_recv.buf);
- uart_recv_clear();
- }
- //==========================================================
- // 函数名称: at_send_byte
- //
- // 函数功能: 数据模式下发送数据
- //
- // 入口参数: data: 数据
- // size: 数据大小
- //
- // 返回参数: 0-成功 -1-失败
- //
- // 说明:
- //==========================================================
- int at_send_byte(char *data, int size, char *res)
- {
-
- int timeOut = 250;
-
- uart_recv_clear();
- Usart_SendString(USART2, (unsigned char *)data, size);
- if(!uart_recv_match_wait(res,timeOut))
- {
- //uart_recv_clear();
- return 0;
- }
- //uart_recv_clear();
- return -1;
- }
|