#include <stdio.h>
#include<string.h>
#include "tc35.h"
#include "common.h"
#include <MSP430X44X.h>
// 初始化
int ATE(char pBuf[])
{
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = 'E';
pBuf[3] = '0';
pBuf[4] = 13;//HUI
return 5;
}
// 设置短信中心地址
int CSCA(char pBuf[],char phone[])
{
int offset;
int i;
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = '+';
pBuf[3] = 'C';
pBuf[4] = 'S';
pBuf[5] = 'C';
pBuf[6] = 'A';
pBuf[7] = '=';
pBuf[8] = '"';
offset = 9;
for(i = 0;i < 14;i++)
{
pBuf[offset + i] = phone[i];
}
offset += 14;
pBuf[8] = '"';
offset += 1;
pBuf[offset] = ',';
offset += 1;
pBuf[offset] = '1';
offset += 1;
pBuf[offset] = '4';
offset += 1;
pBuf[offset] = '9';
offset += 1;
pBuf[offset] = 13;
offset += 1;
return offset;
}
//设置短消息格式
int CMGF(char pBuf[],int format)
{
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = '+';
pBuf[3] = 'C';
pBuf[4] = 'M';
pBuf[5] = 'G';
pBuf[6] = 'F';
pBuf[7] = '=';
pBuf[8] = (char)('0' + format);
pBuf[9] = 13;
return 10;
}
//删除短消息
int CMGD(char pBuf[],char index)
{
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = '+';
pBuf[3] = 'C';
pBuf[4] = 'M';
pBuf[5] = 'G';
pBuf[6] = 'D';
pBuf[7] = '=';
if(index >= 10)
{
pBuf[8] = (index/10) + 0x30;
pBuf[9] = (index%10) + 0x30;
pBuf[10] = 13;
return 11;
}
else
{
pBuf[8] = index + 0x30;
pBuf[9] = 13;
return 10;
}
}
//设置模式参数
int CSMP(char pBuf[],char index)
{
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = '+';
pBuf[3] = 'C';
pBuf[4] = 'S';
pBuf[5] = 'M';
pBuf[6] = 'P';
pBuf[7] = '=';
pBuf[8] = '1';
pBuf[9] = '7';
pBuf[10] = ',';
pBuf[11] = '1';
pBuf[12] = '6';
pBuf[13] = '7';
pBuf[14] = ',';
pBuf[15] = '0';
pBuf[16] = ',';
pBuf[17] = index + 0x30;
pBuf[18] = 13;
return 19;
}
//接收短消息
int CMGR(char pBuf[],char index)
{
pBuf[0] = 'A';
pBuf[1] = 'T';
pBuf[2] = '+';
pBuf[3] = 'C';
pBuf[4] = 'M';
pBuf[5] = 'G';
pBuf[6] = 'R';
pBuf[7] = '=';
if(index >= 10)
{
pBuf[8] = (index/10) + 0x30;
pBuf[9] = (index%10) + 0x30;
pBuf[10] = 13;
return 11;
}
else
{
pBuf[8] = index + 0x30; // 变换为asccii码
pBuf[9] = 13;
return 10;
}
}
//发送短消息
void packSms_pdu(char pPhone[],int phonelen,char pData[],int nLen,
int *nTXLen1,int *nTXLen2,char *pout1,char *pout2)
{
char strHead[12] = {'0','0','1','1','0','0',
'0','D','9','1','6','8'};
char chrInfo[7] = {'0','0','0','8','0','1'};
char chrTmp[12];
char phoneTemp[12];
char nTemp[100];
int i;
int n;
for(i = 0;i < phonelen;i++)
{
chrTmp[i] = pPhone[i];
}
chrTmp[phonelen] = 'F';
phonelen += 1;
// 将电话号码按照规范的顺序作成
n = 0;
for(i = 0;i < phonelen / 2;i++)
{
phoneTemp[n++] = chrTmp[2 * i + 1];
phoneTemp[n++] = chrTmp[2 * i];
}//算法忒好了 采用一半
copy(pout2,0,strHead,0,12);
copy(pout2,12,phoneTemp,0,phonelen);//将电话号码 加载到Unicode码中
copy(pout2,24,chrInfo,0,6);
pout2[30]= nLen/10 + 0x30;
pout2[31]= nLen%10 + 0x30;
copy(pout2,32,pData,0,nLen*2);//定义发送的数据量时为2个字符一个
pout2[32+nLen*2]=26;
*nTXLen2=33+nLen*2;
//封装长度信息
nTemp[0] = 'A';
nTemp[1] = 'T';
nTemp[2] = '+';
nTemp[3] = 'C';
nTemp[4] = 'M';
nTemp[5] = 'G';
nTemp[6] = 'S';
nTemp[7] = '=';
nTemp[8] = (15+nLen)/10 + 0x30;
nTemp[9] = (15+nLen)%10 + 0x30;
nTemp[10] = 13;
for(i = 0; i < 11;i++)
{
pout1[i] = nTemp[i];
}
*nTXLen1 =11;
}
void packSms_text(char pPhone[],int phonelen,char pData[],int nLen,
int *nTXLen1,int *nTXLen2,char pOut1[],char pOut2[])
{
int nOffset;
char nTemp[100];
int i;
nOffset = 0;
nTemp[0] = 'A';
nTemp[1] = 'T';
nTemp[2] = '+';
nTemp[3] = 'C';
nTemp[4] = 'M';
nTemp[5] = 'G';
nTemp[6] = 'S';
nTemp[7] = '=';
nTemp[8] = '"';
//处理电话号码
nOffset = 9;
for(i = 0;i < phonelen;i++)
{
nTemp[nOffset + i] = pPhone[i];
}
nOffset += nLen;
nTemp[nOffset] = '"';
nOffset += 1;
nTemp[nOffset] = 13;//13表示回车
nOffset += 1;
for(i = 0; i < nOffset;i++)
{
pOut1[i] = nTemp[i];
}
*nTXLen1 = nOffset;
//处理发送数据
for(i = 0; i < nLen;i++)
{
pOut2[i] = pData[i];
}
pOut2[nLen] = 26;//26表示ctrl+z
*nTXLen2 = nLen + 1;
}
char getSendResponse(char buf[],char res[])
{char re=0;
char *p;
delay(100);//延时一下
p=strstr(buf,res);
if(p!=NULL)
re=1;
else
re=0;
return re;
}
//将源数组的内容拷贝到目的数组
void copy(char pDest[],int nOrg,char pOrg[],int nStart,int nLen)
{
int i;
for(i = 0;i < nLen;i++)
{
pDest[nOrg + i] = pOrg[i + nStart];
}
}
// 将字节处理成字符串
/*void ByteToChar(char nInPut[],char Out[],int nLen)
{
int i;
char chrTemp;
for(i = 0;i < nLen;i++)
{
// 高字节
chrTemp = (char)((nInPut[i] >> 4) & 0x0f);
if((chrTemp >= 0) && (chrTemp <= 9)) chrTemp += 48;
else chrTemp += 55;
Out[i] = chrTemp;
// 低字节
chrTemp = (char)(nInPut[i] & 0x0f);
if((chrTemp >= 0) && (chrTemp <= 9)) chrTemp += 48;
else chrTemp += 55;
Out[i] = chrTemp;
}
return;
}*/
// 数的范围为250以内
int IntToChar(int n,char Out[])
{
char chrTemp1;
char chrTemp2;
char chrTemp3;
int nLen;
chrTemp1 = n / 100;
chrTemp2 = (n - chrTemp1 * 100) / 10;
chrTemp3 = n - chrTemp1 * 100 - chrTemp2 * 10;
if(chrTemp1 != 0)
{
nLen = 3;
Out[0] = chrTemp1 + 0x30;
Out[1] = chrTemp2 + 0x30;
Out[2] = chrTemp3 + 0x30;
}
else
{
if(chrTemp2 != 0)
{
nLen = 2;
Out[0] = chrTemp2 + 0x30;
Out[1] = chrTemp3 + 0x30;
}
else
{
nLen = 1;
Out[0] = chrTemp3 + 0x30;
}
}
return nLen;
}
// 编码函数
void Encode(char in[],char out[],int nLen)
{
int nOrigin = 0;
int nCode = 0;
while(1)
{
if(nOrigin >= nLen) break;
out[nCode] = in[nOrigin];
if((nOrigin + 1) >= nLen) break;
out[nCode] |= (char)((in[nOrigin + 1] & 0x01) << 7);
out[nCode + 1] = (char)((in[nOrigin + 1] >> 1) & 0xff);
if((nOrigin + 2) >= nLen) break;
out[nCode + 1] |= (char)((in[nOrigin + 2] & 0x03) << 6);
out[nCode + 2] = (char)((in[nOrigin + 2] >> 2) & 0xff);
if((nOrigin + 3) >= nLen) break;
out[nCode + 2] |= (char)((in[nOrigin + 3] & 0x07) << 5);
out[nCode + 3] = (char)((in[nOrigin + 3] >> 3) & 0xff);
if((nOrigin + 4) >= nLen) break;
out[nCode + 3] |= (char)((in[nOrigin + 4] & 0x0f) << 4);
out[nCode + 4] = (char)((in[nOrigin + 4] >> 4) & 0xff);
if((nOrigin + 5) >= nLen) break;
out[nCode + 4] |= (char)((in[nOrigin + 5] & 0x1f) << 3);
out[nCode + 5] = (char)((in[nOrigin + 5] >> 5) & 0xff);
if((nOrigin + 6) >= nLen) break;
out[nCode + 5] |= (char)((in[nOrigin + 6] & 0x3f) << 2);
out[nCode + 6] = (char)((in[nOrigin + 6] >> 6) & 0xff);
if((nOrigin + 7) >= nLen) break;
out[nCode + 6] |= (char)((in[nOrigin + 7] & 0x7f) << 1);
nCode +=
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
tc35成功模块调试程序.rar (38个子文件)
tc35成功模块调试程序
UART.c 2KB
I2C.c 5KB
flash.c 493B
main.c 4KB
tc35.eww 158B
common.c 67B
common.h 33B
process.c 1KB
tc35.ewp 44KB
adc.h 47B
tc35.dep 7KB
flash.h 109B
define.h 0B
TC35.h 1024B
process.h 135B
tc35.ewd 13KB
adc.c 1KB
settings
tc35.dni 997B
tc35.wsdt 4KB
tc35.dbgdt 6KB
tc35.cspy.bat 2KB
TC35.c 11KB
Debug
List
Exe
tc35.d43 31KB
Obj
UART.pbi 589B
process.r43 5KB
adc.r43 5KB
main.pbi 589B
TC35.r43 38KB
I2C.r43 33KB
UART.r43 7KB
tc35.pbd 276B
main.r43 24KB
common.pbi 593B
common.r43 1KB
TC35.pbi 589B
flash.r43 5KB
UART.h 78B
I2C.h 574B
共 38 条
- 1
资源评论
- whrgl2013-04-19这个确实不错,可以使用
- linuxmobile20102014-07-26可以使用,好好研究去了
- flystarflystar2013-01-12有说明就更好了
- 崔勇2013-04-01挺不错的 就是复杂了点
- ASD5699652012-12-05这个代码还不错,稍微经过移植就可以使用
lwr052
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功