精华内容
下载资源
问答
  • SIM900A—发送接收英文短信

    千次阅读 2020-03-05 23:57:50
    SMS(Short Messaging Service)中文名称短信服务,短信是当下每一部手机上必备的功能之一,顾名思义,它是在手机之间发送文字信息或从个人计算机或手持设备向手机发送信息的一种方式,其文本信息的最大发送量为160个...

    一.SMS简介

    SMS(Short Messaging Service)中文名称短信服务,短信是当下每一部手机上必备的功能之一,顾名思义,它是在手机之间发送文字信息或从个人计算机或手持设备向手机发送信息的一种方式,其文本信息的最大发送量为160个字符(字母、数字或者拉丁字母中的字符),对于中文一般最大发送量为70个字符。
    这里我想用SIM900A模块实现短信的收发
    在这里插入图片描述

    二.短信的控制模式与编码

    先说一下:我采用的是Text Mode下使用GSM编码收发英文短信、使用UCS2编码收发中文短信

    对于短信的控制一共有三种模式:Block Mode、基于AT指令的Text Mode、基于AT指令的PDU Mode 。目前手机中默认使用PDU Mode,通过PDU编码的短信可以是文字、声音或者图像。Text Mode只能用于发送ANSI范围的字符,发送方式比较简单。
    SIM900A模块只提供Text Mode 和PDU Mode。
    中文短信中,所有汉字和字符都是采用UNICODE编码。

    1.Text Mode

    Text Mode下,发送及接收到的数据均以ASCII码的显示来表示,可以发送指令"AT+CMGF=1",将GSM短信发送方式更改为文本模式。文本模式下接收的数据会自动解码,比如你收到一条短信息,GSM会返回:+CMGR: “REC UNREAD”,"+8613806XXXXXX",“11/10/21,13:22:13+32”
    hello (短信内容会自动换行)
    不需要自己解码,便可得到短信的发送者、发送时间和短信内容,比较容易操作。
    理论上Text Mode下,是只能够收发英文短信,但是SIM900A模块可以在Text Mode下使用UCS2编码,从而可以发送接收中文短信。

    2.PDU Mode

    PDU相当于一个数据包,它由SMS的信息组成,作为一种数据单元,必须包含源地址、目的地址、有效时间、数据格式、协议类型、正文、正文长度(可达140字节),这些信息都以十六进制表示。
    PUD Mode被所有手机支持,可以使用任何字符集,其编码方式分为:7bit、8bit、UCS2。
    7-bit编码用于发送普通的ASCII字符,它将一串7-bit的字符(最高位为0)编码成8-bit的数据,每8个字符可“压缩”成7个;8-bit编码通常用于发送数据消息,比如图片和铃声等;而UCS2编码用于发送Unicode字符。在这三种编码方式下,PDU串的用户信息(TP-UD)段最大容量(可以发送的短消息的最大字符数)分别是160、140和70。这里,将一个英文字母、一个汉字和一个数据字节都视为一个字符。
    理论上发送中文短信需要使用PDU Mode的UCS2编码,上面也说了,SIM900A模块可以使用Text Mode发送UCS2编码,而且PDU Mode比Text Mode更加复杂,所以我采用了Text Mode收发中英文短信。
    PDU Mode的详细讲解可以借鉴此博客:点击链接跳转

    3.GSM编码

    在GSM编码模式下,收发消息的内容和电话号码,都是以ASCII字符的形式显示的,发送英文短信时使用十分方便。
    所以我使用GSM编码来收发英文短信。

    4.UCS2编码

    谈到UCS2编码就不得不说UNICODE,UNICODE又叫统一码、万国码,是计算机科学领域里的一项行业标准,包括字符集、编码方案等。UNICODE 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。简单来说,UNICODE编码可以表示世界上任意一种语言(有点夸张),自然也可以表示中文。
    而UCS2编码是UNICODE的一种,UCS2中每个字符都占俩个字节。
    使用UCS2编码后,发送短信的手机号码、短信内容都要经过UCS2编码转换才可以,但UCS2编码发送的消息在手机上可以直接显示为中文。
    所以,需要UCS2与中文的转换软件,如下,可以实现中文和UCS2的双向转换

    在这里插入图片描述

    三.收发英文短信

    采用Text Mode 的GSM编码。
    首先,模块要通过一系列开机测试指令,才可以收发短信。这里介绍一下常用的对短信操作的一些AT指令:

    1.AT+CPMS查询短信数量

    在这里插入图片描述

    2.AT+CNMI设置新消息提示类型

    在这里插入图片描述

    3.AT+CMGF选择短信模式

    在这里插入图片描述

    4.AT+CSCS设置编码

    在这里插入图片描述
    在这里插入图片描述

    5.AT+CSMP设置短信文本模式

    使用Text Mode的GSM编码时,短信文本模式设置为:

    • AT+CSMP=17,167,0,240(消息显示在终端)
    • AT+CSMP=17,167,0,241(消息存储在SIM卡中)

    在这里插入图片描述

    6.AT+CMGS发送消息到指定手机号

    使用Text Mode的GSM编码时,直接AT+CMGS="手机号"即可,然后,在>后输入要发送的内容(不要勾选发送新行),最后发送HEX(十六进制)的:1A 即可。
    如图,我使用本机向本机发送了一条短信,而且,本机收到短信后在终端中显示出来了。
    在这里插入图片描述

    这是SIM公司给出的例子:
    在这里插入图片描述

    CTRL-Z 代表十六进制:1A

    使用SIM900A向本机发送一条英文短信的完整步骤如下:
    在这里插入图片描述

    四.收发中文短信

    收发中文短信利用的是Text Mode下的UCS2编码。
    相比于收发英文短信,收发中文短信需要修改的地方有:

    • 修改编码:AT+CSCS=“UCS2”
    • 修改短信文本模式:AT+CSMP=17,167,0,24(短消息显示在终端,25:存储在SIM中)
    • 手机号码要用UNICODE码
    • 发送的消息要用UNICODE码(有专门的转换软件)

    这是SIM公司给出的例子:
    在这里插入图片描述

    我向女朋友发送信息:可爱的小白鼠,女朋友收到后回复消息,用软件将UNICODE码转换为中文,串口操作界面如示:
    在这里插入图片描述
    发消息如示:
    在这里插入图片描述
    收消息如示:
    在这里插入图片描述

    这是我的SIM900A
    在这里插入图片描述

    有什么问题可以q一下博主,一起学习进步哦
    q:2723808286

    展开全文
  • QI无线充电联盟是目前市场上流行的无线充电解决方案,这份资料很有应用和参考价值 The bq500210 is a second generation Wireless Power dedicated digital controller that integrates the logic functions ...
  • 详细描述和介绍通用异步接收发送器(Uart)的结构、功能、使用方法和例程等
  • vb编写的通过rs232实现发送中文和英文字符串到接收区的自测程序
  • NRF905发送接收程序(有51 avr ),附有NRF905的中,英文资料,对正在玩NRF905的朋友很有帮助。
  • 短信发送接收

    2020-05-29 15:46:47
    PDU模式较复杂,支持中英文发送,分为三种编码方式,编码方式不同,支持的内容和字符长度不同。具体如下: AT命令发送短信 Text模式(向156####2573的手机发送“Test”) AT OK AT+CMGF=1 //设置为Text模式发送...

    使用AT命令发送短消息

    使用AT命令实现收发短信的功能,主要有两种模式:PDU模式、Text模式。Text模式收发短信代码较为简单,容易实现,但只支持ASCII码,不能发送中文短信。

    PDU模式较复杂,支持中英文发送,分为三种编码方式,编码方式不同,支持的内容和字符长度不同。具体如下:在这里插入图片描述

    AT命令发送短信

    Text模式(向156####2573的手机发送“Test”)

    AT
    OK
    AT+CMGF=1      //设置为Text模式发送短信;
    OK
    AT+CMGS=”156####2573”       //输入接收方号码;
    》Test       // “》”为返回符号,发送框输入明文短信内容后,点击发送;
    □       //将鼠标移至返回的□后,Ctrl+Z
    +CMGS: xx       //xx表示短信发送成功的参考数目,与短信内容无关;
    OK       //短信发送成功。正常接收。

    AT+CSMP=17,167,0,xx(xx=16,7 bit编码;xx=20,8 bit编码;xx=24,UCS2编码)
    Text模式输入短信时是明文,但是传输过程中的编码方式可通过上述AT更改。

    AT+CNMI=1,1       //自发自收

    PDU模式(向156####2573的手机发送“你好”)

    AT
    OK
    AT+CMGF=0       //设置为PDU模式发送短信;
    OK
    AT+CMGS=xx       //xx表示PDU编码除SCA以外部分的字节数,如下xx=18;
    》 0891683110801505F011000B815186062575F30008AA044F60597D       //”》”为返回符号,发送框输入Unicode编码后的短信内容,点击发送;
    +CMGS:
    xx       //xx表示短信发送成功的参考数目,与短信内容无关;
    OK

    PDU模式下,均为16进制,一个数字占用半个字节。
    AT+CSCA?      //查询短信中心号码

    PDU编码短信的主要构成

    PDU模式的短信发送时,编码的主要内容有如下几部分。发送和接收短信含有不同的构成,下面会做仔细分析。

    元素 名称 字节长度 描述
    SCA Service Center Address 1-12 短消息服务中心号码
    PDU-Type Protocol Data Unit-Type 1 协议数据单元类型
    MR Message Reference 1 短信发送成功参考数目,与短信内容无关
    OA Originator Address 2-12 发送方源地址(电话号码)
    DA Destination Address 2-12 目的方地址(电话号码)
    PID Protocol Identifer 1 消息中心以何种方式处理消息内容
    DCS Data Coding Scheme 1 数据编码方案
    SCTS Service Center Time Stamp 7 消息中心收到消息时的时间戳
    VP Validity Period 0,1,7 消息有效期
    UDL User Data Longth 1 用户数据长度
    UD User Data 70/140/160 编码方式不同,最大字符数不同

    SCA

    SCA包括三部分:Length表示type+address的字节长度(均为16进制,此时两个数字占用一个字节,8 bit位);Type指短信中心地址的类型;Address指短信服务中心号码,可根据AT+CSCA?查询。移动:861380xxx0500, xxx为办卡地区号。联通:8613010xxx500,xxx为联通分配的短消息中心序列号。例如联通号码:8613010851500。

    Length Type address
    Type+address=08 国内:81;国际:91 683110801505F0

    注:
    Address的编码过程为:将电话号码两位之间对调,最后若剩下奇数个,则末尾补F后,再进行对调。
    在发送编码时,SCA的Length部分可以设置为00,如此后面的部分就不用提供了,发送时由终端自行从SIM卡中读取。

    PDU-Type:

    协议部分,8 bit,每一位都对应一种功能的支持(1)或者不支持(0)。通常发送方设置为11,接收方设置为24,不详述。
    发送方的PDU-type里包括VPF相关的参数,可设置VP的格式,通常是VPF置为10.,采用相对有效期。

    MR:

    短信发送成功参考数目,与短信内容无关。置为00即可,在log中,是由modem给定的一个数字,有一定顺序。

    OA/DA:

    电话号,按照上述Address相同编码方式进行编码即可

    Length Type Address
    Address未编码前的长度 国内:81;国际:91 (86+SIM卡号码)编码后

    PID:

    标准情况下的MS-to-SC(Mobile Station To Switch Center)短消息传送,只需设置PID为00。

    DCS:

    Bit.NO 7 6 5 4 3 2 1 0 描述
    置0/1 0 0 0 0 1 0 0 0 08H,UCS2双字节字符集

    Bit No.7与Bit No.6:一般设置为00

    Bit No.5:0-文本未压缩 1-文本用GSM标准压缩算法压缩

    Bit No.4:0-指示Bit No.1 Bit No.0为保留位,不含信息类型信息 1-指示Bit No.1 Bit No.0含信息类型信息

    Bit No.3与Bit No.2:
    00-默认的字符集,每字符占7bit,此时最大可发送160字符
    01-8bit,此时最大可发送140字符
    10-USC2(16bit),发送双字节字符集
    11-预留

    Bit N0.1与Bit No.0:
    00-Class 0,短消息直接显示在屏幕上
    01-Class 1,
    10-Class 2(SIM卡特定信息),
    11-Class 3

    SCTS占用7个字节

    例如:20年04月21日 16:12:53 GMT+8.00H可以表示为:
    时区为格林尼治时间+8H,所以设置为24+8H=32H。

    时区
    02 40 12 61 21 35 23

    VP的设置分为两种情况:

    第一种:绝对的。从PDU-type中获得的VPF值为11。采用与时间戳相同的标记方式,记录有效期。占用7个字节。

    第二种:相对的。从PDU-type中获得的VPF值为10。占用1字节。给定有效期长度,以消息被SMSC接收到的时间点开始,根据下表进行计算。
    在这里插入图片描述

    UD:

    7-bit编码:将每一个字母的二进制编码列出,最高位–第七位去掉,然后将后面低位顺次往前移动一位,末尾补0,最后转换为16进制编码。
    UCS2编码:高低字节交换。

    UDL:

    指编码前的用户原始数据字节数。一个英文占用一个字节,一个汉字占用两个字节,一个数字占用半个字节。

    举例解释

    如下:0891683110801505F011640B815186062575F30008AA044F60597D,这是一个向手机号“156####2573”发送“你好”的短信编码。采用UCS2编码的短信发送内容,可通过AT直接发送给终端。

    SCA PDU-Type MR DA PID DCS VP UDL UD
    0891683110801505F0 11 00 0B815186062575F3 00 08 AA 04 4F60597D

    如下是从OTA过滤过的log中看出的信息:UL_NAS_TRANSPORT

    在这里插入图片描述

    信令流程

    RRC:随机接入过程。首先,eNode B会通过广播系统信息sib2来通知UE,允许在哪些频域/时域资源上传输preamble消息;随后UE会发送preamble消息,向eNodeB请求随机接入,接入成功,则UE与eNode B之间建立好RRC连接。此时就可以发送短信,主要有如下四个信令流程:
    在这里插入图片描述
    “举例解释”中的log截图均来自于信令1中,可看到信令1包含了UE发出的CP-DATA(包括协议头和RP-DATA),其中RP-DATA中又包括RP头文件,源地址,目的地址和TP-DATA用户数据。TP-DATA的用户部分就是实际的短消息内容,TP-DATA的数据头部分就包括一些编码方式等信息。

    随后,MSC会将短信数据转发到SMSC,在信令2中可以看到,网络侧会在CP层回复CP-ACK(ACK,Acknowledge character,确认接收端接收到数据的返回信息),再由MSC下发给UE。

    信令3中,网络侧RP层也会进行响应,返回RP-ACK。这个RP-ACK是嵌套在CP-DATA的用户数据部分发送给UE的。
    在这里插入图片描述
    信令4中,UE端收到了来自网络的两个ACK消息,才能确认短信已正常送达,然后回复CP-ACK,结束发送流程。

    展开全文
  • 本文采用红外遥控器实现了英文字符的输入,利用双音频实现了数据的传输,发射机采用锁相环产生...从耳机收到的音乐清晰悦耳,关闭调制信号,静噪效果好,在15米的距离内,发送16字符的英文短信,接收端显示正确无误。
  • 控件提供必要接口可以实现普通汉字短信(最长70个汉字)、普通英文短信(使用7Bit编码,单条最长160字节)、超长汉字短信(拆分后每条63个汉字)、超长英文短信(使用7Bit编码,每条152字节)的发送接收功能;
  • 但在英文OS发送中文消息,服务器端接收为乱码,似乎是默认使用了ISO进行编码。 [code="java"] BusinessServiceService businessServiceService = new BusinessServiceService_Impl(); B...
    Web Service客户端使用JAX-RPC, JDK1.4。

    在中文OS发送中文消息、服务器端接收正常;但在英文OS发送中文消息,服务器端接收为乱码,似乎是默认使用了ISO进行编码。


    BusinessServiceService businessServiceService = new BusinessServiceService_Impl();
    BusinessService businessService = businessServiceService.getBusinessService();

    businessService.sendMessage("测试信息"); // 服务器端中文OS接收正常;英文OS接收乱码(ISO?)



    请了解这块的人给些提示,谢谢!
    展开全文
  • DatagramSocket发送接收数据

    千次阅读 2011-01-20 14:45:00
    基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送接收数据报的对象,Java提供了DatagramSocket...
    展开全文
  • AT指令发送接收短信(Text/Pdu模式)

    千次阅读 2013-10-20 15:53:19
    AT指令收发短信主要有两...PDU模式不仅能发送中文短信,也能发送英文短信。PDU收发短信有三种编码可用:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,即英文短信,最多可发送160字符。8- bit编码通常
  • mail 是 Linux 的邮件客户端命令,可以利用这个命令给其他用户发送邮件。... 功能描述:发送接收电子邮件。 【例 1】发送邮件。 如果我们想要给其他用户发送邮件,则可以执行如下命令: [roo...
  • 在真实室内环境中,用MICA2节点设计分析影响无线接收信号强度(radio signal strength,RSS)的实验,发现其影响因素不仅包括发送接收方(transmitter-receiver,T-R)之间的距离,且MICA2节点的工作频率和供电电池电压、发送...
  • 发短信时发现超长短信发送接收方接不完整,接收到的长度不一,网上搜索下,手机短信是有一个国际标准的。根据此标准,每条短信最多发送1120位,合140字节的内容,如果发送英文字符,由于英文ASCII采用 7位编码,...
  • 采用了多线程,如果发送端输入的是英文接收端可以正常接收。 但是如果发送端输入的是中文,接收端无法接收,而且程序会卡。这是怎么回事?代码如下: 主程序代码: public class ChatDemo { public static void ...
  • 发送接收和删除 Amazon SQS 消息本主题描述了如何发送接收和删除 Amazon SQS 消息。始终使用 SQS 队列发送消息。发送消息通过调用 AmazonSQS 客户端的 sendMessage 方法,将单个消息添加到 Amazon SQS 队列。...
  • (1).DDos概念分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDoS)是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对...
  • 今天用安卓通过Socket发送数据到电脑上使用C语言写的服务端,发送英文没有问题,可当把数据改变成中文时,服务端接收到的数据确是乱码。 突然想到。VS的预处理使用的是ANSI编码。而安卓网络数据都是UTF8格式的...
  • 然而,这些基本都是英文。所以,英文好对做研发是有很大益处的。不过好在有翻译工具,如:有道(我就是用有道划的): C语言虽然没有class,但有struct。我们可以多用struct。ST库和ucos中就包含许多struct。 程序...
  • GSMModem AT指令发送短信 非dll 里面的内容包括各种编码与解码7-bit 8-bit ucs2,由于公司需要,我只做的发短信功能,但本程序中包含接收、阅读、删除等代码。
  • 原文:Game Networking系列,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年。 概述 在之前的网游中的网络编程系列1:UDP vs....注意,因为接下来英文原文中所有的代码是C++写的,而我是个pythoner,...
  • Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低成本,组网灵活。...而仅zigbee协议就接近400页,而IEEE802.15.4协议多达600页,全部是英文。如果从来没有接触过无线通信的开发,要迅速掌握
  • 今天用安卓通过Socket发送数据到电脑上使用C语言写的服务端,发送英文没有问题,可当把数据改变成中文时,服务端接收到的数据确是乱码。  突然想到,VS的预处理使用的是ANSI编码,而安卓网络数据都是UTF8格式...
  • --zookeeper : zookeeper集群列表,用英文逗号分隔。可以不用指定zookeeper整个集群内的节点列表, 只指定某个或某几个zookeeper节点列表也是可以的 replication-factor : 复制数目,提供failover机制;1
  • 1、下载程序V1 HEX文件 到单片机内51内核单片机,连接P1.0为按键低电平有效,P2.0为LED,打开串口调试助手,...按下按键,默认手机号码 18086085555(也可以将号码修改成自己的号码)会接收英文短信,表示调试成功;
  • Linux编程点击右侧关注,免费入门到精通!作者丨wuyangchunhttps://segmentfault....如果英文没有问题,强烈建议阅读后面参考里的两篇文章,里面介绍的更详细。本文只讨论以太网的物理网卡,不涉及虚拟设备,并且...
  • 发送程序: 与接收程序合作实现两台计算机的串口通信,但只能正确接受英文字母和数字,界面为VC标准视图(38KB)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 842
精华内容 336
热门标签
关键字:

发送接收英文