51单片机无线收发模块如何控制手机收发短信,大概讲一个机理就可以了~

51单片机控制SIM300收发数据#include&reg52.h&#define unchar unsigned char#define unint unsigned intunchar *void chushihua(){ TMOD=0x20; TH1=0 TL1=0 TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; PCON=0x00;}void send_byte(unchar c){ SBUF=c; while(TI!=1);
TI=0;}void send_string(unchar *str){ while(*str!='\0')
send_byte(*str++);
}}chuli(){ if(re==&error&)//判断收到的是不是&error&(不知道这么做对不对)——! { send_string(&ATD4302099&); send_byte(0x0d); }}main(){ &
chushihua(); &
send_string(&ATD4302099&);
send_byte(0x0d); &
chuli(); &
} &void reveive() interrupt 4{ &
*re=SBUF; &
} &}--------------------------------------------------------------告诉你一个很好的方法:那就是去网上下一个串口调试助手,发什么收到什么 一目了然~~------解决方案--------------------------------------------------------只要波特率率设置正确 确定串口被打开 就应该不会有问题的可以发 AT 两个字符过去 当然不要忘记后面加回车 即 \r~~~成功的话会返回ok再不行那就要看你的硬件是否出问题了------解决方案--------------------------------------------------------这个不是吧,呵呵------解决方案--------------------------------------------------------SIM300 Serial port1的RTS线没有拉低,或者使用Serial port2。port1是七线制的,port2是2线制的。------解决方案--------------------------------------------------------开机后,一直等到出现 Call Ready 后,再发送ATD命令你最好先用串口助手调试模块,再写,这样会比较节约调试时间------解决方案--------------------------------------------------------好像你初始化管脚51单片机控制tc35收发短信中单片机部分原理图_百度知道
51单片机控制tc35收发短信中单片机部分原理图
麻烦知道的提点意见吧。现在我想问下怎样设计单片机部分,由于对这方面不太了解。单片机在GSM短信平台的应用最近做毕业设计。我不知道该怎样画。导师现在问我要单片机部分原理图,GSM是西门子的TC35。选用的是8051单片机。
论文题目是这样的。所以向大家求教
提问者采纳
想再复杂点可以加上个看门狗电路就行了,SIM接口显然跟单片机没关系,这个得去查点相关论文了也不难。外接芯片的电路书上都有,应该会涉及到单片机的p3的那八个I&#47,比如外接程序存储器和外接数据存储器,这两个电路都很好找的,所以,所以建议你了解一下RS232的通信协议,如果程序比较复杂的话可能还要加上译码芯片和外接的扩展芯片,我只知道它是串口通信,如果是本科毕设,我也就知道这么多了 哦对了,这些应该就够了,单片机要想跟TC35通信需要通过RS232;O口,然后需要一个稳压电源电路,只知道TC35有两种接口RS232和SIM接口,至于GSM就不太懂了,单片机部分的原理图主要得画上复位电路和时钟电路(就是晶振电路)我们也学过51单片机
提问者评价
非常感谢你呀。我昨天也查了不少资料。和你说的差补多。现在原理图弄的差不多了。
其他类似问题
为您推荐:
51单片机的相关知识
其他2条回答
在百度图片 搜索TC35
  单片机部分的原理图主要得画上复位电路和时钟电路(就是晶振电路),这两个电路都很好找的,然后需要一个稳压电源电路。  51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁MCS-51单片机控制手机收发短信息的原理
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
MCS-51单片机控制手机收发短信息的原理
单片机与手机的联系与应用
2.1单片机与手机软硬件之间的联系单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。工作原理就是嵌入式的计算机,体积小,可以用汇编语言来指导自动化运作。
2.1.1单片机与手机软硬件之间的联系
目前市场上流行的大部分手机几乎都具有数据引出口,并基本上都支持与GSM短信息相关的AT控制指令(GSM&SMS&AT指令),手机通过数据口以串行方式接收指令并向外输出数据。理论上讲,在数据口中找出RXD、TXD和GND引脚与单片机的串口对应连接即完成了硬件接口,然而,实际上由于不同品牌,不同型号手机的RXD、TXD和GNG引脚并非一致,找查这三根线有时也非易事,况且手机数据口的电平既不是RS232电平,也不是TTL电平,与由5V供电的单片机的串口还不能直接联接。最简单、最可靠的方法是使用手机的数据线建立单片机与手机的硬件连接。手机数据线是专为连接PC机9针串口而设计的,一是信号电平为标准的RS232电平,只要单片机的串口也转换为RS232电平,就可方便连接。二是9针串口引脚定义是固定的,即2 脚为TXD(手机发送),3脚为RXD(手机接收)、5脚为GNG,这样,无论什么型号的手机与单片机的连接就成了固定连接,不需要知道手机数据口信号的具体定义,二者通过数据线的连接电路。
需要注意的是:不同手机数据线内部电平转换芯片的供电方式是不同的,有的是通过手机直接供电;有的是通过窃取PC机串口某些引脚(通常为4、6、7、8引脚)的电流经内部整流滤波稳压后提供,判断的方法是将数据线一端插到手机数据口,测量另一端2脚与5脚之间的电压,如果有-7V左右的电压,则为前者,如果测不出电压,则为后者,对于后者则需要单片机为4、6、7、8、引脚任意一引脚提供+5V电压即可。
2.1.2& 单片机与手机的软件接口及控制原理
单片机与手机的软件接口其实就是单片机通过与GSM短信息有关的AT指令控制手机的控制技术,如读取手机的短消息内容,删除短消息内容,列出手机中还未读的短消息等。关于AT指令的功能描述请读者参考&参考文献&所示的文章内容,此处不再赘述。然而,执行一条指令,也并非某些资料中介绍得那么简单,事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接受的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的,本文仅谈原理,如果有高手能实现请在上发表大家一起讨论。
单片机发送和手机应答的具体at命令和握手过程请参考本站另一篇文章& 希望大家能开发成功。
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved求一个89C51单片机 控制SIM900(相似的也可以),收发短信的程序!_百度知道
求一个89C51单片机 控制SIM900(相似的也可以),收发短信的程序!
,但是两个程序弄在一起就不行了收短信的我弄好了,发短信的我也弄好了,感谢。求高手发个程序,或指点一下
提问者采纳
r\/=0XFF){while(DMA1_Channel7-&;/0&需要等待应答{while(--waittime) /
其他;a'
#include &quot,&quot,y;&#47.h&usart2,大于的时候发送字符串.h&#include &/;9&);} &#47!=0){buf[1]=sim900a_chr2hex(*src++)*16;//接收到一次数据了{ USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;LCD_Fill(x;DEL&quot.h&quot:0;f';DR=(u32)cmd,发送成功(得到了期待的应答结果)/; USART2_RX_STA=0;/; u8 buf[2];7&/&#47:发送的命令字符串(不需要添加回车了);usart,(const char*)str);//;buf[0]=sim900a_chr2hex(*src++)*16.h&0X80){*dst=temp,&//if(chr&/if(USART2_RX_STA&0X8000)
/&#47,&/#include &&#47,&quot,x+160;/向sim900a发送命令&#47,&quot,0~15;4&+10);&/POINT_COLOR=RED,y:0;/buf[0]=*src++;)return (chr-&#39,x必须为0)void sim900a_load_keyboard(u16&#47.h&9&/i&/返回值;&#47:字符、GPRS测试)共用代码/8)&0X0F);if(hex&gt.h&quot,y+84;CNDTR;&#47.h&/*&lcd,&/ #include &F' return '///src++;}else
//将1个字符转换为16进制数字//1&0& }return res,&添加结束符} //+10),u16 waittime){u8 res=0;13)Show_Str_Mid(x+(i%3)*80;/
#include &if(chr&键盘码表const u8* kbd_tbl1[13]={&quot,gbk2uni时;/等待通道7传输完成
#include &//8&
#include &#include &}else {*(u16*)dst=swap16(temp);/返回值;/0X81) /LCD_DrawRectangle(x;加载键盘界面(尺寸为240*140)/&#47.h&&#47:0;/&#47,1);&#47,如果为空;='/}else u2_printf(&/:期待的应答结果;7&&#47:chr对应的16进制数值u8 sim900a_chr2hex(u8 chr){if(chr&/6&quot,y+140);i++){if(i&for(i=0,WHITE);;;unicode 2 gbk{ while(*/返回值;0'='A'unicode gbk 转换函数/dst+=2,y+140;/a&#39.h&quot:字符u8 sim900a_hex2chr(u8 hex){if(hex&&#47.h&quot,16,清零USART2_RX_STA;/3&sim900a发送命令后;//&#47,&quot,发送失败u8 sim900a_send_cmd(u8 *cmd,检测接收到的应答/)return chr-&#39,y+6+28*(i/4)&0X0F);&#47,不清零USART2_RX_STA;;/void sim_at_response(u8 mode){if(USART2_RX_STA&0X8000)
&#47,&#&/='///if(temp&lt,&quot!=0);A'/&&chr&/;x;&#47,y+140),x+240,gbk到unicode转换;#include &/&#47.h&/&#47.h&*dst++=sim900a_hex2chr(temp&0X0F);/
temp=(u16)ff_convert((WCHAR)*(u16*)添加结束符printf(&quot,发送数字(比如发送0X1A)!=0){if(*src&//&#47,&///
LCD_DrawRectangle(x+80,&quot,x+240;/;dst++;&#47,y+112);} }/&#47,1);//将1个16进制数字转换为字符/=15)return (hex-10+'/if((u32)cmd&&#47,&发送到串口if(mode)USART2_RX_STA=0;&#47,u16返回值,(u8*)kbd_tbl[i];&#47:16进制数字,&//if(mode)/发送命令if(ack&&waittime)
/} }if(waittime==0)res=1;};;&#47,&quot,&/%s&void sim900a_unigbk_exchange(u8 *,0);/2&//&&chr&buf[1]+=sim900a_chr2hex(*src++),80)./
#include &quot,&将收到的AT指令应答数据返回给电脑串口&#47:输入字符串/}///kbd_tbl=kbtbl:期待的应答结果/A&#39,为unicode字符串)/;;/;/接收到一次数据了{ USART2_RX_BUF[USART2_RX_STA&0X7FFF]=0;/u8* kbd_fn_tbl[2],USART2_RX_BUF);3); return 0; #include &/;/&#47,u8 * temp=(u16)ff_convert((WCHAR)*(u16*)/#& /0XFF的时候;;
1,则表示不需要等待应答/,y;; ///8&////a~F/&#47,占2个字节{buf[1]=*src++.&#include &quot,u8 *//buf[0]+=sim900a_chr2hex(*src++);;/gbk 2 unicode{while(*/;*dst++=sim900a_hex2chr((temp&&#47,y;
#include &/等待倒计时{delay_ms(10);/const u8* kbd_tbl2[13]={&;;&#47:10ms)/12)&0X0F);0'///}///u8** kbd_2&&#47.h&quot,u8 mode){u16//
LCD_DrawRectangle(x;
1,y+56);)return (chr-'/*dst++=sim900a_hex2chr((temp&;/&#47,kbd_fn_tbl[i-13];///&#47,&//;/3&POINT_COLOR=BLUE:0:输出(uni2gbk时为gbk内码;&#47,没有得到期待的应答结果/;&#47,unicode到gbk转换,&&#47:界面起始坐标(320*240分辨率的时候;/}} }*dst=0;/%s\}/5&quot,&quot,80);接收到期待的应答结果{if(sim900a_check_cmd(ack))非汉字{temp=(u16)ff_convert((WCHAR)*//if(USART2_RX_STA&0X8000)///DEL&=10&&hex&&gt,&quot,y+6+28*(i/ }*dst++=sim900a_hex2chr((temp&4&n&//// /&#47,cmd);='3);ATK-SIM900A 各项测试(拨号测试;1&;&&chr&0'&#47,期待应答结果的位置(str的位置)u8* sim900a_check_cmd(u8 *str){char *strx=0;A~F/&#47,&///}}else &#47,x+240;&#47,&//0'/};//&#47代码如下
流程是一致的
只是端口定义不同#include &='sim900a;else Show_Str_Mid(x+(i%3)*80;添加结束符strx=strstr((const char*)USART2_RX_BUF,当cmd&} return (u8*)得到有效数据 USART2_RX_STA=0、短信测试;=9)return hex+&#39:等待时间(单位;6&5&LCD_DrawRectangle(x;,16;='汉字,u8 **kbtbl){u,x+240,&quot,y+28;&gt,0~9&#47.h&quot
提问者评价
其他类似问题
为您推荐:
单片机的相关知识
其他2条回答
你把程序发来
我帮你整合下
需要帮你做吗
=.= 弄好了,原来困扰了我几个小时的只是一个小问题。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁摘要:介绍用mcs-51系列
控制手机收发短信息的原理、硬件、pdu数据格式和符合gsm07.05协议要求的短信息发送/接收程序,同时给出了一个应用实例。
关键词: 单片机 短信息 pdu gsm 接口
gsm(global system for&mobile communation)系统是目前基于时分多址技术的移动通讯体制中比较成熟、完善、应用最广泛的一种系统。目前已建成的覆盖全国的gsm数字蜂窝移动通信网,是我国公众移动通信网的主要方式。主要提供话音、短信息、数据等多种业务。基于gsm短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统,能广泛用于远程监控、定位导航、个人通信终端等。由于公众gsm网络在全球范围内实现了联网和漫游,建立上述系统不须再组建专用通信网络,所以具有实时传输数据功能的短消息应用将得到迅速普及。
目前,人们设计的各类dte设备基础上以为核心,带有rs232/rs485等通信接口,在物理层上很容易实现与gsm设置(如手机等)的连接。但对sms协议的研究文献却较少,特别是用 单片机 控制手机的sms(short message service)收发的研究更少。笔者在用单片机设计基于gsm的sms数据采集器时,对怎样用单片机控制手机收发短信息进行了探讨。1 串口控制sms的工作原理
单片机 与手机一般采用串行异步通信接口,具有红外和通信电缆两种连接方式,通信速度可设定,通常为19200bps。采用红外接口的优点是单片机系统与手机电气隔离,相互不干扰,接口各自独立,使用方便;缺点是通信距离较短,红外传播的方向性对接口相对位置有要求。采用电缆连接时,数据传输的可靠性较好;其主要缺点是接口的电气参数不兼容,设计不当时会对手机的通信质量产生影响。笔者经过实践设计的接口电路如图1。
gsm的短信息业务sms利用信令信道传输,这是gsm通信网所特有的。它不用拨号建立连接,把要发的信息加上目的地址发送到短信息服务中心,经短消息服务中心完成存储后再发送给最终的信宿。所以当目的gsm终端没开机时信息不会丢失。每个短消息的信息量限制为160字节。
现在市场上大多数手机均支持gsm07.05规定的at指令集。该指令集是etsi(欧洲通信技术委员会)发布的,其中包含了对sms的控制。利用gsm手机的串行接口, 单片机 向手机收发一系列的at命令,就能达到控制手机收发sms的目的。etsi的gsm07.05中用于sms收发控制的主要at命令见表1。表1 常用at指令gsm07.05function(功能)ate0resetat csms选择短信息服务at cpms选择短信息内存at cmgf选择短信息格式at csca短信息中心地址at cnmi显示新收到的短信息at cmgr读短信息at cmgs发送短信息at cmgl列出sim卡中短信息at cmss从sim内存中发短信息at cmgw向sim内存中写入待发短信息at cmgd删除sim内存中的短信息at cscb选择蜂窝广播信息
gsm手机通过异步通信接口实现对sms的控制共有三种接入协议:bk mode;基于at命令的textmode;基于at命令的pdu mode。pdu模式是发送或接收手机sms信息的一种方法,短信息正文经过十六进制后被传送。目前,pdu mode应用最为广泛,基本上全国所有的电信局都提供支持pdu mode的短消息业务。有些地址则不支持text mode和block mode,这就限制了这两种接入协议的应用,而且pdu mode已有取代block mode的趋势。为了保证系统具有广泛的适用性,本文采用pdu模式收发sms。
pdu相当于一个数据包,它由构成消息(sms)的信息组成。作为一种数据单元,它必须包含源/目的地址、保护(有效)时间、数据格式、协议类型和正文,正文长度可达140字节,它们都以十六进制表示。pdu结构根据短消息由移动终端发起或以移动终端为目的而不同。
当由移动终端发起时,pdu的格式为:smscpdu类型mrdapiddcsvpudlud(0~140octed)
当以移动终端为目的时,pdu的格式为:smscpdu类型oapiddcssctsudlud(0~140octed)
其中,smsc为短消息业务中心地址,da/oa为源/目的地址,pid为协议识别,dcs为数据编码,udl为用户数据长度,ud为用户数据,vp为有效时间,mr指明是发出信息,scts指明短消息到达业务中心的时间。
2 pdu格式下短信息的接收
根据设置不同,手机将收到的短消息保存在缓存单元或存入sim卡, 单片机 从手机中接收短消息实质上就是从sim或缓存中读出信息。这主要利用at cmgr和at cmgl两条指令来完成,其工作过程见图2。
由于不同的厂商对at指令集的解释代码和响应信息不一样,所以 单片机 首先要确认能否与手机建立起通信,一般用ate指令完成此确认;然后用at cmgf指令选定短消息的数据格式;在收到手机的正确回答反以at指令完成读出功能。一般用at cmgl读取以前的信息,在收到手机的ring(振铃)数据时,用at cmgr读取实时信息。
以下是笔者设计的物流数据采集系统中用到的接收sms的一个实例,它说明了pdu模式的应用。 单片机 发送和接收(手机回答)均为ascii码。所用手机为siemens s3508i。
操作过程如下({}内为注释):
手机回答:ok {已建立联接}
发送:at cmgf=0 {选用pdu格式}
手机回答:ok {允许选择pdu格式}
发送:at cmgl=2 {列出已有的短信息}
手机回答: cmgl:1,2,,24{1表示信息个数,2表示未发信息,24表示信息总容量}
0d05ff84cf682d
95e0dc2b36d3d170ad97ad97a3492608
以上这组pdu格式的十六进制字符串,不但包含了短消息的内容,同时包含了发送者的手机号码、短信息中心号码、短消息发送时间等。
下面对信息内容进行分析:
0d:短信息中心地址(号码)长度。
91:短信息中心号码类型,91是ton/npi。ton/npi遵守international/e.164标准,指在号码前需加' '号;此外还可直有其他数值,但91最常用。
f0:smsc 短信息所使用的服务中心号码。它经过十六进制以字节为单位的高低半字节换位处理,号码是奇数的添f,构成一个hex字节。
04:pdu类型,文件头字节。
0b:主叫号码长度。
81:主叫号码类型。
f1:0a主叫号码,也经过了处理,实际号码为。
00:pid,为协议标识。
00:dcs短信息编码类型是gsm default alphabet,即由7位ascii码移位组成8位十六进制码(octet),其方法见表2。1sthexb0a6a5a4a3a2a1a02ndhexc1c0b6b5b4b3b2b13rdhexd2d1d0c6c5c4c3c24thhexe3e2e1e0d6d5d4d35thhexf4f3f2f1f0e6e5e46thhexg5g4g3g2g1g0f6f56thhexh6h5h4h3h2h1h0g6
80:scts短信息发送时间,02/06/08/14:00:33.08。
26:udl经处理后的8位码(octet)短信息字节长度,它小于消息ascii码的长度。
3e30dc2b36d3d170ad97ad97a3492608:ud 编码后的pdu数据,短信息内容“/13:48id102okid103ok id201fail”。
3 短信息的发送
与接收短信息一样,发送时也要先建立联接,传送一些初始化指令,然后发送短消息内容。下面是用siemens s3508i发送一个短信息的例子,内容为:“/13:48 id102ok id103ok id201fail”。其ascii码为:“62fa30324f4b
发送:ate {请求建立联接}
手机回答:ok {已建立联接}
发送:at cmgf=0 {选择pdu模式}
手机回答:ok
发送:at csms=0{检测手机是否支持sms命令}
手机回答:ok
发送:at cmgs=52{发送短信息,52 octets(不包括最初9个短信息元字节)}
手机回答:&{允许上传数据,ascii码是($20h,$2eh)}
发送:bf14cf682d95
e30dc2b36d3d170ad97ad97aa
不计最初9个短消息信元字节,本短信息有52字节(104个字符)。at cmgs仅说明了smsc信息内容的长度,在收到手机回答的&符号手才发送pdu数据串,并以(l^z)结束。
pdu数据串的内容说明如下:
08:短信息信元smsc(短信息中心号码)的字节长度
91:短信息中心号码类型,91表明中心号码是国际通用电话号码。
f0:短信息中心号码:0。
11:pdu sms发送的文件头字节。这里11指正常发送短信息。
00:信息类型。这里00指让手机自动加上主叫号码。
0b:被叫号码长度。
81:被叫号码类型。
f1:被叫号码。
00:协议标识。
00:短信息编码类型是gsm default alphabet。
aa:短信息被保留的时间为4天,其计算方法依照表3。vp值短消息有效时间长度0~143(vp 1)×5分钟144~16712时 (vp-143)×30分168~1961天×(vp-166)197~2551周×(vp-192)
26:pdu格式短信息编码后字节长度。
3e30dc2b36d3d170ad97ad
97a3492608:编码后的pdu数据,短信息内容为“/13:
48id102okid103ok id201fail”。
1a:ascii码ctrl^z:报文结束标志。
4 应用情况及常见主要问题的解决
笔者用mcs-51系列的 单片机 研制了一个手持式的数据采集产品,通过simeens手机,利用gsm的sms传输数据。经过在国内多个省市较大数量长期广泛的使用,性能良好,没有出现数据丢失的现象。证明上述设计用,性能良好,没有出现数据丢失的现象。证明上述设计是正确的。但在调试和试用阶段也遇到了如下问题:
手机的电缆接口电平一般是3v左右, 单片机 系统的工作一般为2.7~5.5v,范围较宽,为保证数据传输的正确,需在接口加电平限制电路,详见图1。
(2)部分城市无法使用
一些城市的sms平台不允许使用缺省短消息服务中心号码的协议,只需在发送的pdu数据前面几个字节加上中心号码即可,详见本文发送实例。
(3)不能接收已正确发送的短消息
除gsm的sms信道拥塞原因外,主要是pdu中pid字节的设置,使得收到的信息要存入sim卡,而sim卡已满,故不再接收信息。改变pid的设置即可。
(4)收不到开机前的短消息
主要是发送数据时,对短消息有效时间vp值设置不当造成的。
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670&

我要回帖

更多关于 虚拟号码收发短信软件 的文章

 

随机推荐