微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > stm32中AT发送可变短信

stm32中AT发送可变短信

时间:12-03 来源:互联网 点击:
/******************** (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控制DS1302
下一篇:stm32学习之五

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top