/******************** (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************/