SIM900发送中文短信的处理过程

news2024/9/21 20:31:33

SIM900发送中文短信的处理过程

1、短信中心号码处理:

短信中心号码可以使用AT+CSCA?获取。

在获取之前,最好将设置使用GSM字符:

AT+CSCS="GSM"        

OK

 

AT+CSCA?

+CSCA: "+8613800755500",145

 

OK

这样一来,我就得到短信中心号码“+8613800755500”。去掉“+”后为“8613800755500”,再看看“8613800755500”数据长度是不是奇数,若是奇数,则在末尾添加“F”。由于“8613800755500”的数据长度是13,所以就变为“8613800755500F”。接着,将奇数位置和偶数位置交换,变为“683108705505F0”。在“683108705505F0”前面添加“91”,表示“国际”,现在我们得到“91683108705505F0”,计算“91683108705505F0”的数据长度为16,除以2得到“08”的16进制字符串,现在我们得到“0891683108705505F0”。

 

2、手机号码处理:

假定接收短信的手机号码为“+861366265ABCD”。 去掉“+”后为“861366265ABCD”,记住手机长度为13,不算“+”号,转为16进制字符串为“0D”,若“861366265ABCD”的数据长度为奇数,则在末尾添加“F”。由于“861366265ABCD”的数据长度是13,所以就变为“861366265ABCDF”。接着,将奇数位置和偶数位置交换,变为“68316662A5CBFD”。在“68316662A5CBFD”前面添加“91”,表示“手机”,现在我们得到“9168316662A5CBFD”。在“9168316662A5CBFD”的前面添加16进制字符串为“0D”,这是电话号码去掉“+”后的长度。这样我们得到“0D9168316662A5CBFD”,接着在“0D9168316662A5CBFD”的前面添加“1100”字符串。这样我们得到“11000D9168316662A5CBFD”。在“11000D9168316662A5CBFD”末尾添加“000800”字符串,这样我们得到“11000D9168316662A5CBFD000800”。

 

3、短信内容处理:

假定短信内容是个“你”字,对应内码为“4F60”,计算短信内容的长度为4,将短信内容的长度除以2,得到16进制的字符串为“02”,将它添加到“11000D9168316662A5CBFD000800”末尾,就变为“11000D9168316662A5CBFD00080002”,在“11000D9168316662A5CBFD00080002”添加短信的内容,就变为“11000D9168316662A5CBFD000800024F60”。

 

4、发送的数据长度处理:

计算“11000D9168316662A5CBFD000800024F60”的数据长度为34,将该数据长度除以2,就是17,转换为10进制的自符串就是“017”。

 

发送的数据:

0891683108705505F011000D9168316662A5CBFD000800024F60

AT+CMGF=0\r 设置为中文发送。

 

OK

 

AT+CMGS=017\r

>

0891683108705505F011000D9168316662A5CBFD000800024F60

+CMGS: 8

 

OK

手机为1366265ABCD的号码会收到一个中文“你”字。

 

AT+CMGF=1\r 设置为英文发送

OK

 

AT+CMGS=\"+861366265ABCD\"\r

>

4F60

+CMGS: 11

 

OK

手机为1366265ABCD的号码会收到一个英文“4F60”字符串。

以上的方法,都经过实验,是可行的. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python酷库之旅-第三方库Pandas(023)

目录 一、用法精讲 58、pandas.isnull函数 58-1、语法 58-2、参数 58-3、功能 58-4、返回值 58-5、说明 58-6、用法 58-6-1、数据准备 58-6-2、代码示例 58-6-3、结果输出 59、pandas.notna函数 59-1、语法 59-2、参数 59-3、功能 59-4、返回值 59-5、说明 5…

线程的复习

目录 大纲Java中的线程概念创建线程的方法线程的生命周期线程的同步和通信线程的优先级和调度线程的中断 案例 大纲 Java中的线程概念 在Java中,线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中实际运作的部分。一个…

python单测框架之pytest常见用法

单测框架的作用 测试发现:从多个文件中寻找测试用例。测试执行:按照一定顺序去执行并且生成结果。测试断言:判断最终结果与实际结果的差异。测试报告:统计测试进度、耗时、通过率,生成测试报告。 pytest简介 pytest是…

51单片机10(蜂鸣器介绍)

一、蜂鸣器介绍: 1、蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 (1)压电式蜂鸣器,它主要由多谐的一个增胀器…

Cyber Weekly #15

赛博新闻 1、OpenAI 绝密项目「草莓」首次曝光 据外媒路透社报道,OpenAI 内部正在一个代号为「草莓(Strawberry)」的项目中开发一种新的人工智能模型。该模型细节此前从未被报道过,而 OpenAI 正在努力证明该模型类型能够提供高级…

C++客户端Qt开发——信号和槽

三、信号和槽 1.信号和槽概述 在Qt中,用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件,"用户关闭窗口”也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出"按钮被点击"的信号&…

ensp防火墙智能选举综合实验

实验要求: 实验图: 新增配置: 路由isp: 7: 保留ip操作: 一、DX区域: 1、源地址池配置: 2、nat策略: nat安全策略配置: 二、YD: 1、源地址池配置&#xf…

最值得推荐的10款Windows软件!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频播放量破百万https://aitools.jurilu.com/1.音乐播放器——Dopamine Dopamine是一款音乐播放器,设计简洁美观。它支持多种音频格式,包括wav、mp3、ogg…

平衡树——AcWing 253. 普通平衡树

平衡树 定义 平衡树是一种自平衡的二叉搜索树,它在进行插入和删除操作后能够自动调整其结构,以保持树的高度尽可能低,从而保证树的查找、插入和删除操作能够在对数时间内完成。最著名的平衡树有AVL树和红黑树。 AVL树:是一种严格…

10月23-25日|2024年武汉袋式除尘展重磅来袭

2024第六届(武汉)国际袋式除尘技术与设备展览会 时间:2024年10月23-25日 地点:武汉国际文化博览中心 展会介绍: 2024第6届(武汉)国际袋式除尘技术与设备展览会将于2024年10月23-25日在武汉文…

Linux进程理解

一、进程的理解 首先我们知道我们的操作其实都是在运行程序,不仅是在windows上打开软件还是在Linux上执行指令,而程序存在于磁盘上,程序的要想运行就要把程序的代码和数据从磁盘加载到内存,那么到这一步是创建了一个进程吗&#…

c#中的特性

在C#中,特性(Attributes)是一种向程序元素(如类、方法、属性等)添加元数据的方式。特性可以用来提供关于程序元素的附加信息,这些信息可以在编译时和运行时被访问。 特性主要有以下几个用途: 提…

北京交通大学《深度学习》专业课,实验2-前馈神经网络

1. 源代码 见资源“北京交通大学《深度学习》专业课,实验2-前馈神经网络” 2. 实验内容 (1)手动实现前馈神经网络解决上述回归、二分类、多分类任务 分析实验结果并绘制训练集和测试集的loss曲线 (2)利用to…

GUI界面开发之tkinter(一)

Tkinter是一个内置的Python库,用于创建图形用户界面(GUI)。它提供了一组工具和小部件,用于创建窗口、对话框、按钮、菜单和其他GUI元素。 在本篇文章中,主要介绍了窗口等知识点。 大家好!我是码银&#x1…

STM32MP135裸机编程:烧录程序到EMMC的方法

0 前言 STM32MP135支持多种启动方式,包括SD卡、NAND Flash、EMMC等,基于STM32MP135裸机的SD卡烧录操作方法我们之前已经介绍过,现在介绍的STM32MP135烧录到EMMC的方法又和前面烧录到SD卡的操作有所不同。本文将介绍基于STM32MP135&#xff0…

缓存的击穿及解决方案

定义及图解 缓存击穿的意思是对于设置了过期时间的key,缓存在某个时间点过期的时 候,恰好这时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端 DB 加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把…

Flutter 调用Google内购支付最新教程

前言: 各位同学大家好, 之前看到有人在群里问flutter 怎么调用Google支付, 今天就准备整理写一篇文章。 效果图 实现方式: 我们是通过flutter和安卓交互 然后在原生安卓里面加入了内购支付结算库的依赖 最后调起的Google 支付 安卓原生内购支付教程 flutter 端代码 我…

Go: IM系统开发及注意事项

概述 使用Go语言打造支持,同时十万人在线的IM系统系统单机支持十万人,如果分布式部署后,支持数百万都是可以的IM 系统, 即时通讯(Instant Messaging),比如说我们的微信,QQ 等IM 系统,它具备非常…

软件测试服务公司分享:系统测试和验收测试有什么联系和区别?

软件系统测试是指对软件系统的各个模块、组件以及整个系统进行全面检查和验证的过程。它旨在检测系统的功能是否符合需求、是否能够正常运行以及是否存在潜在的问题。在软件开发的整个生命周期中,系统测试是一个非常重要且必不可少的环节。 软件验收测试是软件在开…

vs code 启动react项目,执行npm start报错原因分析

1.执行 npm start错误信息:npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 npm start ~~~ CategoryInfo …