安信可A6模块短信模式的配置
2017-08-25 14:59
225 查看
安信可A6模块短信模式的配置
前段时间搞了下这个,配置的时候碰到很多问题。最后上电初始化时是这样配置的
AT //第一条为无效指令,A6模块根据这次数据传输调整波特率 AT+GMGD=1,4 //删除存储的所有短信 AT+CSMS=0,1,1,1 //选择短消息服务 AT+CNMI=2,2,0,1,1 //配置短信接收模式 AT+CMGF=1 //设置短信格式为text AT+CSCS="GSM" //设置短信编码用GSM AT+CPMS="SM","SM","SM" //选择短消息内存为SM卡
附上模块程序(STM32F103C8T6)
//gprs_ga6.h #ifndef __GPRS_GA6_H__ #define __GPRS_GA6_H__ #include "usart.h" #define GPRS_GA6_TRUE 1 #define GPRS_GA6_FALSE 0 #define GPRS_GA6_NULL 0 extern void GPRS_GA6_Init(void); //extern void GPRS_GA6_Recive_Unit(void); //extern int GPRS_GA6_SMSMODE_Loop_Init(u16 time); extern u8 GPRS_GA6_InitComplete_Flag; #endif
//gprs_ga6.c #include "gprs_ga6.h" //A6模块初始化完成标志 u8 GPRS_GA6_InitComplete_Flag = GPRS_GA6_FALSE; //送一个字节 u8 GPRS_GA6_Send_Byte(u8 data) { USART1_SendData(data); return GPRS_GA6_TRUE; } //送一组字节 '\0'结尾 u8 GPRS_GA6_Send(u8* data) { USART1_SendString(data); return GPRS_GA6_TRUE; } //A6接收检查子程序 比较两个byte数组 //recive-接收内容 check-比对内容 u8 GPRS_GA6_Recive_Check(u8* recive, u8* check) { int i=0; int check_len = 0; int cmp_pos = 0; for (check_len = 0; check_len < USART1_REV_BUFFER_LEN; check_len ++) { if (check[check_len] == '\0') { break; } } if (check_len <= 1) { return GPRS_GA6_TRUE; } for (i=0; i < USART1_REV_BUFFER_LEN; i++) { if (recive[i] == '\0') { break; } if (recive[i] == check[cmp_pos]) { cmp_pos += 1; if (cmp_pos >= check_len) { return GPRS_GA6_TRUE; } } else { cmp_pos = 0; } } if (cmp_pos >= check_len) { return GPRS_GA6_TRUE; } else { return GPRS_GA6_FALSE; } } //A6接收子程序 check-检查比对内容 u8 GPRS_GA6_Recive(u8* check) { u8* recive_buf; if (USART1_RevBuffer_Check()) { recive_buf = USART1_RevBuffer_Pop(); if (GPRS_GA6_Recive_Check(recive_buf, check) == GPRS_GA6_TRUE) { return GPRS_GA6_TRUE; } else { return GPRS_GA6_FALSE; } } else { return GPRS_GA6_NULL; } } //A6发送一个命令 并检查返回 u8 GPRS_GA6_AT_Cmd(u8* cmd, u8* check) { static int prc = 0; switch (prc) { case 0: if (GPRS_GA6_Send(cmd) == GPRS_GA6_TRUE) { prc = 1; } break; case 1: if (GPRS_GA6_Recive(check) == GPRS_GA6_TRUE) { prc = 2; } break; case 2: prc = 0; return GPRS_GA6_TRUE; default: prc = 0; break; } return GPRS_GA6_FALSE; } //A6短信模式初始化 u8 GPRS_GA6_SMSMODE_Init(void) { static int prc = -1; static u16 time = 0; while (1) { switch (prc) { case -1: if (GPRS_GA6_AT_Cmd("AT\r\n", "")) { time = 0; prc = 0; Delay_Nms(1000); } break; case 0: if (GPRS_GA6_AT_Cmd("AT+CMGD=1,4\r\n", "OK")) { prc = 1; time = 0; Delay_Nms(100); } break; case 1: if (GPRS_GA6_AT_Cmd("AT+CSMS=0,1,1,1\r\n", "OK")) { prc ++; time = 0; Delay_Nms(100); } break; case 2: if (GPRS_GA6_AT_Cmd("AT+CNMI=2,2,0,1,1\r\n", "OK")) { prc ++; time = 0; Delay_Nms(100); } break; case 3: if (GPRS_GA6_AT_Cmd("AT+CMGF=1\r\n", "OK")) { prc ++; time = 0; Delay_Nms(100); } break; case 4: if (GPRS_GA6_AT_Cmd("AT+CSCS=\"GSM\"\r\n", "OK")) { prc ++; time = 0; Delay_Nms(100); } break; case 5: if (GPRS_GA6_AT_Cmd("AT+CPMS=\"SM\",\"SM\",\"SM\"\r\n", "OK")) { prc ++; time = 0; GPRS_GA6_InitComplete_Flag = GPRS_GA6_TRUE; Delay_Nms(100); } break; default: prc = -1; return GPRS_GA6_TRUE; } if ((time++) >= 60000) { time = 0; prc = -1; return GPRS_GA6_FALSE; } } } //A6短信模式循环初始化 u8 GPRS_GA6_SMSMODE_Loop_Init(u16 time) { u16 i=0; for (i=0; i<time; i++) { if (GPRS_GA6_SMS_Init() == GPRS_GA6_TRUE) { return GPRS_GA6_TRUE; } Delay_Nms(200); } return GPRS_GA6_FALSE; } //A6初始化子程序 void GPRS_GA6_Init(void) { USART1_Init(115200); Delay_Nms(500); GPRS_GA6_SMSMODE_Loop_Init(10); }
虽然现在能成功接收短信了,但如果之后新的模块的SDK发生变化那发送的指令可能也会发生变化。
相关文章推荐
- apache中配置php支持模块模式、cgi模式和fastcgi模式
- 若要调试此模块,请将其项目生成配置更改为调试模式。
- VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
- VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
- 若要调试此模块 请将其项目生成配置更改为 调试 模式
- 若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项。
- 若要调试此模块 请将其项目生成配置更改为 调试 模式 的解决办法
- 防火墙模块工作模式配置
- apache中配置php支持模块模式、cgi模式和fastcgi模式
- apache中配置php支持模块模式、cgi模式和fastcgi模式的实验
- 若要调试此模块,请将其项目生成配置更改为“调试”模式
- 若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项
- 调试时出现若要调试此模块,请将其项目生成配置更改为“调试”模式
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
- VS调试错误:若要调试此模块,请将其项目生成配置更改为"调试"模式
- 若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项
- 若要调试此模块,请将其项目生成配置更改为“调试”模式
- 若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项。