OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5273|回复: 12

51+sim900a通信

[复制链接]

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
发表于 2013-12-3 22:08:35 | 显示全部楼层 |阅读模式
求原子哥指导,今天下午一直在弄SIM900A,用51控制SIM900A打电话发短信,拨打/接听/挂电话已经调通,但发短信还有问题,手机接收不到。用PC机调试用下面的函数都可以接受到短信和打通电话?一下是拨打/接听/挂电话和发短信函数,求大神指导。
/****************************拨打指定电话函数**************************/
/*函数原型: GSM_Call(unsigned char *num)
/*函数功能:拨打指定电话
/*输入参数:num
/*输出参数:无
/**********************************************************************/
void GSM_Call(unsigned char *num)
{
 printf("ATD");
 printf("%s;\n",num);
 Delay_ms(10);
}
/*********************************挂机函数*****************************/
/*函数原型: void GSM_Hang(void)
/*函数功能:挂断电话
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Hang(void)
{
 printf("ATH\n");
 Delay_ms(10);
}
/********************************接电话函数****************************/
/*函数原型: void GSM_Answer(void)
/*函数功能:接听电话
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Answer(void)
{
 printf("ATA\n");
 Delay_ms(100);
}
/***********************给指定号码发送TEXT模式短信*********************/
/*函数原型:GSM_Sent_Text_Message(void)
/*函数功能:给指定号码发送英文短信息。num[]=接收端号码
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Sent_Text_Message(void)
{
 printf("%s\n","AT");    //以下几个为GSM的AT串口指令,设置短信发送类型
 Delay_ms(100);         
 printf("%s\n","AT+CSCS=\"GSM\"" );  //使用GSM字符集            
 Delay_ms(100);

 printf("%s\n","AT+CMGF=1 ");    //设置为TEXT模式,适合发送短信内容为英文              
 Delay_ms(100);
 printf("%s\n","AT+CMGS=\"18092499636\"");       

 Delay_ms(100);
 printf("%s\n","YUISOG8IE56486");   //具体发送的内容在此修改
  Delay_ms(100);
  printf("%h","0x1A");              //结束符,相当于键盘的CTRL+Z

}

/***********************给指定号码发送PDU模式短信*********************/
/*函数原型:GSM_Sent_PDU_Message(void)
/*函数功能:给指定号码发送中文短信。num[]=接收端号码;Sms[]=发送中文内容的Unicode编码
/*输入参数:无
/*输出参数:无
/**********************************************************************/
void GSM_Sent_PDU_Message(char numu[],char sms[])
{

// printf("%s\n","AT"); 
// Delay_ms(10);
 printf("%s\n","AT+CMGF=1");       //设置为PDU模式,适合发送短信内容为中文
 Delay_ms(10);
 printf("%s\n","AT+CSMP=17,167,2,25");    
 Delay_ms(10);
 printf("%s\n","AT+CSCS=\"UCS2\"");     //设置PDU模式参数,8为使用Unicode编码
 Delay_ms(10);
 printf("%s","AT+CMGS=");  
 Delay_ms(10);
  printf("%s", "\""); 
 printf("%s",numu);
 printf("%s\n", "\""); 
 Delay_ms(10);
  printf("%s\n",sms);
Delay_ms(20);
 printf("0x1A");       //(CTRL+Z)
 
}
没有学不会的,只有不想学的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-12-3 22:43:27 | 显示全部楼层
printf("%h","0x1A"); 有问题
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-3 22:49:03 | 显示全部楼层
printf("%h","0x1A");              //结束符,相当于键盘的CTRL+Z

这个能行么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
 楼主| 发表于 2013-12-4 07:59:28 | 显示全部楼层
回复【2楼】miaoguoqiang:
---------------------------------
改成printf("%h","0x1A");这样做还是不行啊?一发短信GSM就死了!问题还是出现在最后一句,但不知道怎么改?PC调试时都可以的 ?
没有学不会的,只有不想学的。
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
 楼主| 发表于 2013-12-4 08:00:41 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
不行啊!用串口软件都可以看到发送的结束符,但是手机就是收不到短信!
没有学不会的,只有不想学的。
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-12-4 08:07:18 | 显示全部楼层
回复【4楼】落花流水:
---------------------------------
两句话都是不对的吧。51单片机应该是这样吧,SBUF=0x1a;printf只能发送ascii
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-12-4 08:14:23 | 显示全部楼层
你先看看注册到了没。看那看AT指令,发个监测运营商的那个AT指令
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
 楼主| 发表于 2013-12-4 08:17:01 | 显示全部楼层
回复【6楼】miaoguoqiang:
---------------------------------
是的,那怎么解决这个问题?我前几天用的西门子的TC35i发短信时最后一句printf("%S","0x1A");  都可以的!不知道用SIM900a就不行了!
没有学不会的,只有不想学的。
回复 支持 反对

使用道具 举报

105

主题

522

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1386
金钱
1386
注册时间
2012-10-23
在线时间
97 小时
发表于 2013-12-4 09:07:21 | 显示全部楼层
回复【8楼】落花流水:
---------------------------------
单字节发送。SBUF=0x1a;
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
 楼主| 发表于 2013-12-4 09:14:57 | 显示全部楼层
回复【9楼】miaoguoqiang:
---------------------------------
好的,我试试。谢谢!
没有学不会的,只有不想学的。
回复 支持 反对

使用道具 举报

3

主题

14

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-8-8
在线时间
0 小时
 楼主| 发表于 2013-12-4 09:23:32 | 显示全部楼层
回复【9楼】miaoguoqiang:
---------------------------------
大神,太感谢了!好了!可以接收到了!不过有个问题,就是同样的一个短信结束,为什么西门子的TC35i就可以,SIM900a就不行呢?都是十六进制啊?
没有学不会的,只有不想学的。
回复 支持 反对

使用道具 举报

13

主题

206

帖子

1

精华

高级会员

Rank: 4

积分
613
金钱
613
注册时间
2014-10-26
在线时间
32 小时
发表于 2015-3-5 14:51:10 | 显示全部楼层
源文件不共享下么?
学习!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-9-23
在线时间
0 小时
发表于 2015-5-19 21:26:16 | 显示全部楼层
回复【11楼】落花流水:
---------------------------------
哥们   发短信的 程序 共享 好不 ,现在毕设 卡在这里了 ,1415403329@qq.com,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 05:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表