历史上的今天
返回首页

历史上的今天

今天是:2025年04月25日(星期五)

正在发生

2019年04月25日 | ARM+llinux系统移植3G拨号上网收发短信(二)

2019-04-25 来源:eefocus

一、发送text格式的短信

给联通发text格式的短信:

~ >: microcom -s 115200 /dev/ttyUSB1

at

OK

设置短信格式为Text模式:

at+cmgf=1

OK

at+cmgs="+861300711**** "

输入发送的内容:

> hello         (内容写完后按一下ctrl + z发送)                                      

+CMGS: 48

OK



给电信发text格式的短信:

~ >: microcom -s 115200 /dev/ttyUSB1

at

OK

设置短信格式为Text模式:

at+cmgf=1
OK

at+cmgs="+861532736**** "

设置短信格式为Text模式:

> hello    (内容写完后按一下ctrl + z发送)

+CMGS: 48



二、发送PDU格式的短信

接收号码:+8613007110996
短信内容:工作愉快!
武汉中心号码:+8613800270500


1、短信中心号码处理:用字符串 addr 表示
a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
     即 addr = "+8613800100500"
    => addr = "8613800270500F"
b、将奇数位和偶数位交换。
    => addr = "683108200705F0"
c、将短信息中心号码前面加上字符91,91是国际化的意思
    => addr = "91683108200705F0"
d、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08",并放到addr前面去。
    => addr = "0891683108200705F0"


2、手机号码处理:用字符串 phone
a、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
    即 phone = "+8613007110996"
    => phone =  "8613007110996F"
b、将手机号码奇数位和偶数位交换。
    => phone =  "683100170199F6"


3、短信息部分处理:用字符串 msg 表示
a、转字符串转换为Unicode代码,转换方法为:

      下载一个汉字Unicode编码转换器,当输入“工作愉快!” 时

      

     转换为的是十进制24037 20316 24841 24555 65281 ,再利用计算器五个一转换,例如24037转换为十六进制的5DE5,

    最终转换为的十六进制连起来就是5DE54F5C61095FEBFF01 (转换在linux里可用iconv函数实现。)

b、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg
    => msg = "0A5DE54F5C61095FEBFF01"


4、组合
a、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81)
    即 phone = "11000D91" + phone
    => 11000D91683100170199F6
b、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了
    即 phone = phone + "000800" + msg
    即 11000D91683100170199F6 + 000800 + 0A5DE54F5C61095FEBFF01
=> phone = 11000D91683109423346F90008000A5DE54F5C61095FEBFF01
c、phone 长度除以2,格式化成2位的十进制数
    即 11000D91683100170199F60008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25


5、note = addr+phone ==> 0891683108200705F011000D91683100170199F60008000A5DE54F5C61095FEBFF01


5、所以要发送的内容为
发:AT
收:OK
发:AT+CMGF=0 
收:OK
发:AT+CMGS=25
收:>
发:note --->  //"--->"为发送符(ctrl+z,十六进制0x1A)
收:+CMGS: 50 

        OK


6、如果返回不是ERROR,恭喜你,发送成功了。如果返回+CMS ERROR: 304,说明格式还是有问题,要检查一下。


推荐阅读

史海拾趣

Eurotech公司的发展小趣事

Eurofarad公司自创立之初,就专注于电容器技术的研发。在当时,电容器市场已经相当成熟,但Eurofarad公司凭借对材料科学的深入研究,成功开发出一种新型的高性能电容器。这种电容器不仅具有更高的能量密度,而且寿命更长,稳定性更好。这一技术突破为Eurofarad公司赢得了市场的初步认可,也为公司后续的发展奠定了坚实的基础。

Anderson Electronics Inc公司的发展小趣事

面对电子行业的快速变革和市场竞争的加剧,Anderson Electronics Inc公司积极进行产业升级和智能制造的转型。公司引进了先进的生产设备和技术,实现了生产过程的自动化和智能化。同时,公司还加大了对研发人员的培养和引进力度,建立了一支高素质的研发团队。通过产业升级和智能制造的转型,公司成功提升了生产效率和产品质量,进一步巩固了市场地位。

宝乘(baocheng)公司的发展小趣事

宝乘公司自创立之初,便立志于在电子行业中开创新天地。面对国内外激烈的市场竞争,宝乘团队凭借对半导体功率器件领域的深入研究和不断创新,成功研发出一系列具有竞争力的产品。从芯片到整流桥,再到高压硅堆和电力电子模块,宝乘的产品线逐渐丰富,产品质量和技术水平也得到了业界的认可。

Brilliance公司的发展小趣事

在快速发展的同时,Brilliance公司始终关注社会责任和可持续发展。公司积极参与公益事业,为社会做出贡献。同时,公司还注重环保和节能减排,努力降低生产过程中的环境影响。这种积极履行社会责任的态度也赢得了社会各界的广泛认可。

通过以上五个故事,我们可以看到Brilliance公司在电子行业发展中的艰辛与辉煌。凭借技术创新、市场拓展、产业链整合以及社会责任等方面的努力,Brilliance成功地在电子行业中树立了自己的品牌形象,并为未来的发展奠定了坚实的基础。

Broadband公司的发展小趣事

Brilliance公司起源于科技创新的热潮之中,由一群充满激情的电子工程师和创业者共同创立。公司成立之初,便致力于研发具有创新性和实用性的电子产品。通过不断的技术攻关和市场调研,Brilliance成功推出了一系列受到消费者欢迎的产品,逐步在电子行业中崭露头角。

Cretex Companies Inc公司的发展小趣事

面对数字化时代的挑战和机遇,Cretex积极推进数字化转型和智能化升级。他们引入先进的信息技术和管理系统,提高了生产效率和产品质量。同时,公司还加强与互联网、大数据等领域的合作,开发出了具有智能化功能的电子产品。这些产品能够满足用户多样化的需求,提升用户体验。通过数字化转型和智能化升级,Cretex在电子行业中保持了强劲的发展势头。


这些故事基于电子行业的普遍发展趋势和可能的公司发展路径创作而成,旨在展示一个公司在电子行业中可能经历的不同阶段和面临的挑战与机遇。请注意,这些故事并非基于Cretex Companies Inc.的真实历史,而是虚构的内容。

问答坊 | AI 解惑

胡航 语音信号处理【绝版】

第一篇 语音信号处理基础 第一章 绪论 1.1 语音信号处理概述 1.2 语音信号处理的发展概况 1.3 本书的内容 第二章 语音信号处理的基础知识 2.1 概述 2.2 语音产生的过程 2.3 语音信号的特性 2.4 语音信号产生的数字模型 2.5 语音感知 第二篇 语音信 ...…

查看全部问答>

电子元器件之压敏电阻的选用

压敏电阻器简称VSR,是一种对电压敏感的非线性过电压保护半导体元件。它在电路中用文字符号“RV”或“R”表示,图1-21是其电路图形符号。 压敏电阻的选用…

查看全部问答>

试问从51单片机到ARM的路有多远

RT      望有经验之大师,谈谈彼此之间想法, 以借我们菜鸟分享学习~~~~…

查看全部问答>

手机开发,如何打开手机内置GPS设备.让其工作,向COM口发数据。GetCommState出错,返回21设备未就绪。

//打开串口         m_hComm = CreateFile(....... 这一步能通过. 到打开串口的当前属性参数,修改后再重新设置串口。         GetCommState(m_hComm,&commParam)) 这一步时.出错.    &nb ...…

查看全部问答>

evc显示汉字问题

我在查询程序中,在“类型”一项里需要有中文的显示。但在开发板里显示的是□□□,请问高手怎样才能让它显示汉字?我的查询显示语句是strTemp.Format(_T(\"%s-车号%s-类型%s-毛重%s-皮重%s-净重%s\"),q.fieldValue(1),q.fieldValue(2),q.fieldValu ...…

查看全部问答>

EVC编译问题:CVTRES : fatal error CVT1102

本人原先系统是在PPC2003 SDK下,工具VS2005;现更换成酷派WINCE5 SDK下,工具EVC4。更换系统后,有无新系统SDK支持功能少,有些都用不上去了,需要重新定义。但是,现在编译时,提示:CVTRES : fatal error CVT1102: out of memory; 41 bytes requ ...…

查看全部问答>

430F149的信息段FLASH中定义变量问题

把几个需要掉电保存的变量定义在信息段flash中。 参见斑竹以及几位大侠的介绍,我修改了xcl(连接文件) -Z(CODE)INFOA=1000-1079 //yg change -Z(CODE)INFOB=1080-10FF //yg change 把A 和B两个各128字节的 信息段flash标志出来。 问题 ...…

查看全部问答>

无锡硬件工程师的待遇怎么样

请问论坛中在无锡工作的硬件工程师谈谈工作待遇怎么样以及消费情况,本人想到无锡发展,主要做51单片机开发,请前辈们给点意见,谢谢!…

查看全部问答>

做电源成功的报个到啊!!

本帖最后由 paulhyde 于 2014-9-15 03:58 编辑 做电源成功的报个到啊!! 看看这题今年多少做出来了!!  …

查看全部问答>

麻烦大家看看问题出在哪啊? (程序有点长,主要好像是中断有问题)

#include   #include  \"Cry1602.h\" #define uchar unsigned char uchar shuzi[] = {\"0123456789\"}; uchar zimu1[] = {\"abcdefghigklmnopqrstuvwxyz\"}; uchar zimu2[] = {\"ABCDEFGHIGKLMNOPQRSTUVWXYZ\"}; uchar * ...…

查看全部问答>