stm32中AT发送可变短信

发布者:zhaodawei617最新更新时间:2016-10-05 来源: eefocus关键字:stm32  AT发送  可变短信 手机看文章 扫描二维码
随时随地手机看文章
/******************** (C) COPYRIGHT 2015 **************************
 * 文件名  :main.c
 * 描述    :使用方法: p为要发送的短信内容
 *    center为手机卡的短信中心
 *    tel为要发送的手机号的号码
 *    串口会打印AT操作的内容
**********************************************************************************/
#include "stm32f10x.h"
#include "usart1.h"
#include "wchar.h"
#include
 
/*
 * 函数名:main
 * 描述  :主函数
 * 输入  :无
 * 输出  :无
 */
//0891683110101605F011000D91687100275510F0000800
//pdu模式数据:0891683108200205F031000D91683157121468F00008AA 04 4F60597D
//0891
//683108200205F0
//31----------TPDU头部
//00
//0D
//91
//683157121468F0
//00----------协议标识
//08----------编码方案 08中文编码 00为英文或者数字
//AA----------有效期
//04----------用户数据长度 用户数据长度除2格式化为2位16进制数即可。
//4F60597D
 
 
 
 
u8 messageContent[500];
u16 ATCMGSLen = 0;
//短信内容长度:
u16 MessageLen = 0;
u16 ContentLen = 0;
 
int main(void)
{
   int i = 0;
//这个可以灵活配置
wchar_t p[] = L"报警:车载设备00002温湿度异常:当前时间:2014年10月16日14时59分00秒,温度:+23.3℃,湿度:73.2%RH。";
//短信中心需要从手机卡中获取
u8 center[] = "3110101605F0";
//手机号码需要设置
u8 tel[] = "7100275510F0";
//串口IO基本配置
USART1_Config();
ATCMGSLen += strlen("11000D91");
ATCMGSLen += 14; 
ATCMGSLen += strlen("000800");
ATCMGSLen += 2;
MessageLen = (sizeof(p)/sizeof(wchar_t) - 1) * 4;
strncpy(&messageContent[0],"0891683110101605F0",strlen("0891683110101605F0"));
strncpy(&messageContent[0],"089168",strlen("089168"));
strncpy(&messageContent[0 + strlen("089168")],center,strlen(center));
strncpy(&messageContent[0 + strlen("0891683110101605F0")],"11000D9168",strlen("11000D9168"));
strncpy(&messageContent[0 + strlen("0891683110101605F0") + strlen("11000D9168")],tel,strlen(tel));
 
strncpy(&messageContent[0 + strlen("0891683110101605F0") + strlen("11000D9168") + strlen("7100275510F0")],
"000800",strlen("000800"));
ATCMGSLen += MessageLen;
ATCMGSLen = ATCMGSLen/2;
 
ContentLen =  MessageLen / 2;
sprintf(&messageContent[0 + strlen("0891683110101605F0") + strlen("11000D9168") + strlen("7100275510F0") + strlen("000800")],
"%02x",ContentLen);
   {
int len = strlen("0891683110101605F0") + strlen("11000D9168") + strlen("7100275510F0") + strlen("000800") + 2;
for(i = 0; i < sizeof(p)/sizeof(wchar_t) - 1 ; i ++)
sprintf(&messageContent[len + i * 4],"%04x",p[i]);
}
printf(" AT+CMGS=%d\r\n",ATCMGSLen);
printf("%s\r\n",messageContent);
 
 
for(;;)
{
 
}
}
/******************* (C) COPYRIGHT 2015 *****END OF FILE************/
 
关键字:stm32  AT发送  可变短信 引用地址:stm32中AT发送可变短信

上一篇:stm32之i2C硬件驱动ht16c22
下一篇:stm32的RTC操作

推荐阅读最新更新时间:2024-03-16 15:13

ST-LINK V2 无法下载程序相关问题
1.两种STLINK 2.针对第一款ST-LINK connection error 和 No ST-LINK connected 其实并没有那么多的麻烦 只需要检查这几点 检查连线是否正确 检查驱动是否安装 更新下ST-LINK固件版本 不要使用拓展坞(分线器) 开发板一定要先独立供电后,再将ST-LINK插到电脑端 3.针对第二款ST-LINK相关问题 正常现象 2.不正常现象 这种情况建议换台电脑试一下,指示灯不亮的情况下很大可能ST-LINK已损坏,一直闪烁时估计是内部电路出现了问题。 大部分情况下,损坏的原因是ST-LINK单独长时间供电导致的,要避免这种情况的发生。 4.安装驱动
[单片机]
ST-LINK V2 无法下载程序相关问题
JSP向Servlet传递数据以及与STM32、ESP8266通信过程
工作流程: login.jsp- ValidateTest.java- ControlTest.jsp和SocketTest.java- Control.java- 8266- STM32 以上文件中后缀名为.jsp的就是JSP文件,Control.java和ValidateTest.java就是所谓的Servlet文件,SocketTest.java就是普通的Java Class文件。即只要是和JSP文件有数据传递关系的都得创建Servlet文件,而不是创建Class文件,当然了,你创建Class文件也行,只不过里面还是都得有Servlet文件所必须的doPost之类的方法。 Servlet是用来和JSP进行通信的文件,
[单片机]
JSP向Servlet传递数据以及与<font color='red'>STM32</font>、ESP8266通信过程
stm32以太网LWIP学习笔记之UDP通信
初始化配置步骤 第一:硬件底层DMA缓存以及以太网内存初始化 if(ETH_Mem_Malloc())return 1; //内存申请失败 if(lwip_comm_mem_malloc())return 1; //内存申请失败 u8 ETH_Mem_Malloc(void) { DMARxDscrTab=mymalloc(SRAMIN,ETH_RXBUFNB*sizeof(ETH_DMADESCTypeDef));//申请内存 DMATxDscrTab=mymalloc(SRAMIN,ETH_TXBUFNB*sizeof(ETH_DMADESCTypeDef));//申请内存 Rx_Buff=m
[单片机]
STM32的nvic之理解
例程: /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Enable the WAKEUP_BUTTON_EXTI_IRQn Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = WAKEUP_BUTTON_EXTI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue; NVIC_InitStructure.N
[单片机]
<font color='red'>STM32</font>的nvic之理解
STM32 文件系统 fatfs 移植笔记详解
1、内存和Flash介绍 stm32 的 flash 地址起始于 0x0800 0000,结束地址是 0x0800 0000 加上芯片实际的 flash 大小,不同的芯片 flash 大小不同。 RAM 起始地址是 0x2000 0000,结束地址是 0x2000 0000 加上芯片的 RAM 大小,不同的芯片RAM也不同。 Flash 中的内容一般用来存储代码和一些定义为 const 的数据,断电不丢失,RAM 可以理解为内存,用来存储代码运行时的数据,变量等等,掉电数据丢失。 stm32 将外设等都映射为地址的形式,对地址的操作就是对外设的操作。 stm32 的外设地址从 0x4000 0000 开始,可以看到在
[单片机]
<font color='red'>STM32</font> 文件系统 f<font color='red'>at</font>fs 移植笔记详解
STM32学习总结——SMT32基本知识
1.STM32 简介 STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 2. STM32F103性能特点 1.内核:ARM
[单片机]
STM32单片机电源端并联电容的重要性
如图,笔者用TQFP(32-100PIN)0.55MM转直插的转接板焊了一个STM32F207VET6的板子。板上引出了SWD调试接口(仅占用PA13和PA14),USART1串口引脚,插了一个触摸传感器和蜂鸣器模块。 所要实现的功能是:用手触碰一下触摸传感器后,蜂鸣器响一声。 接触摸传感器模块输出信号接到PA0口上。在没有接电源电容之前,每一次单片机复位(无论是软件复位还是按下复位键复位),PA0上会自动产生一个异常的高电平,要等上将近10秒才会回到低电平,然后触摸传感器才能正常工作。每次复位的时候蜂鸣器都会响一下,10秒之内按触摸键都没有反应。 后来我接了一个4.7μF的电解电容器和两个100nF的无极性电容器,问题就解决
[单片机]
STM32默认启动
TM32默认启动时PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNTRST、JTDI、JTDO。 当我们试用SWD接口调试仿真时,这三个引脚可以用作普通IO。 具体做法就是禁用JTAG功能。只需使用以下语句即可。 #define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved