/** * author wulianwei * title 通信模块AT基础指令 */ #include "stm32f10x.h" #include "sys.h" #include "at.h" //C库 #include #include 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; }