当前位置:   article > 正文

STM32F103—有关SIM900A模块的使用_sim900a接听电话的中断函数

sim900a接听电话的中断函数

适用于SIM900A的指令:

AT+CPIN? 该指令用于查询 SIM 卡的状态,主要是 PIN 码,如果该指令返回+CPIN:READY,则表明 SIM 卡状态正常,返回其他值,则有可能是没有 SIM 卡。

AT+CSQ 该指令用于查询信号质量,返回 SIM900A 模块的接收信号强度,如返回+CSQ:30,0,表示信号强度是 30 (最大有效值是 31)。

AT+COPS? 该指令用于查询当前运营商,该指令只有在连上网络后,才返回运营商, 否则返回空,如返回: +COPS:0,0,“CHINAMOBILE”,表示当前选择的运营商是中国移动。

AT+CNUM, 查询模块号码。
拨打电话:ATD+号码+;(分号必须加!!!)
ATA,用于应答电话,当收到来电的时候,给模块发送: ATA,即可接听来电。 ATH,用于挂断电话,要想结束正在进行的通话,只需 给模块发送: ATH,即可挂断。
接听电话:AT+CLIP=1,开启来电显示功能。

短信的读取与发送:AT+CMGF=1,即可设置为文本模式。AT+CSCS,用于设置 TE 字符集,默认的为 GSM7 位缺省字符集
AT+CPMS?可以查询当前 SIM 卡最大支持多少条短信存储,以及当前存储了多少条短信。

首先,发送: AT+CMGF=1,设置为文本模式。
然后,发送: AT+CSMP=17,167,2,25,设 置文本模式参数。
最后发送: AT+CSCS=“UCS2”,设置为 UCS2 编码字符集。
此时,我们便可 以发送 AT+CMGS 指令来发送中英文短信了,不过由于使用了 UCS2 字符集,所有字符/数字/ 汉字,都必须使用 UNICODE 编码。

汉字 UNICODE 互换工具.exe
发送指令: AT+CMGS="UNICODE转换后的手机号"
模块返回: >
需要发送的内容:UNICODE 编码
在发送完内容以后,最后以十六进制(HEX)格式单独发送(不用添加回车): 1A(即0X1A)

sim900a.c

  1. #include "sim900a.h"
  2. #include "usart.h"
  3. extern uint8_t Uart1_Rx_Cnt;
  4. extern char RxBuffer2[256];
  5. uint8_t ByteSend=0x1A;//短信发送
  6. //发送指令
  7. void Sim900A_SendAtCmd(char* pCmd)
  8. {
  9. char c;
  10. while(*pCmd!='\0')
  11. {
  12. c = *pCmd;
  13. HAL_UART_Transmit(&huart1, (uint8_t *)&c, 1,0xFFFF);
  14. pCmd++;
  15. }
  16. }
  17. //常规指令
  18. void Sim900A_SendAT(void)
  19. {
  20. Sim900A_SendAtCmd("AT+CPIN?\r\n");//查询 SIM 卡的状态
  21. HAL_Delay(1000);
  22. Sim900A_SendAtCmd("AT+CSQ\r\n");//查询信号质量
  23. HAL_Delay(1000);
  24. Sim900A_SendAtCmd("AT+COPS?\r\n");//查询当前运营商
  25. HAL_Delay(1000);
  26. }
  27. //拨打电话
  28. void Sim900A_SendMsg1(void)
  29. {
  30. Sim900A_SendAtCmd("ATD+\"*********\";\r\n");//电话号码的unicode码
  31. HAL_Delay(1000);
  32. }
  33. //发送短信
  34. void Sim900A_SendMsg2(char* pSam)
  35. {
  36. Sim900A_SendAtCmd("AT+CMGF=1\r\n");//设置为文本模式
  37. HAL_Delay(1000);
  38. Sim900A_SendAtCmd("AT+CSMP=17,167,2,25\r\n");//设置文本模式参数
  39. HAL_Delay(1000);
  40. Sim900A_SendAtCmd("AT+CSCS=\"UCS2\"\r\n");//设置为 UCS2 编码字符集
  41. HAL_Delay(1000);
  42. Sim900A_SendAtCmd("AT+CMGS=\"*********\"\r\n");//电话号码的unicode码
  43. HAL_Delay(1000);
  44. Sim900A_SendAtCmd(pSam);//发送短信内容unicode码
  45. HAL_Delay(1000);
  46. HAL_UART_Transmit(&huart1, &ByteSend, 1,0xFFFF);
  47. }

sim900a.h

  1. /* USER CODE END Header */
  2. /* Define to prevent recursive inclusion -------------------------------------*/
  3. #ifndef __SIM900A_H__
  4. #define __SIM900A_H__
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. /* Includes ------------------------------------------------------------------*/
  9. #include "main.h"
  10. /* USER CODE BEGIN Includes */
  11. /* USER CODE END Includes */
  12. /* USER CODE BEGIN Private defines */
  13. /* USER CODE END Private defines */
  14. //u8 sim900a_send_cmd(u8 *cmd, u8 *ack, u16 waittime);
  15. //u8* sim900a_check_cmd(u8 *str);
  16. //u8 sim900a_check_status();
  17. //u8 sim900a_sms_test(u8* msisdn);
  18. /* USER CODE BEGIN Prototypes */
  19. void Sim900A_SendAtCmd(char* pCmd);//发送指令
  20. void Sim900A_SendAT(void);
  21. void Sim900A_SendMsg1(void);
  22. void Sim900A_SendMsg2(char* pSam);
  23. /* USER CODE END Prototypes */
  24. #ifdef __cplusplus
  25. }
  26. #endif
  27. #endif /*__ SIM900A_H__ */

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/280875
推荐阅读
相关标签
  

闽ICP备14008679号